From 157207b915647cd8600c616cf6dfed8f83ecff30 Mon Sep 17 00:00:00 2001 From: Thomas Friedrichsmeier Date: Sat, 26 Jun 2021 22:16:22 +0200 Subject: [PATCH] Add dummies for the new R graphics functions to avoid crash. This is not a proper implementation, yet. CCBUG: https://bugs.kde.org/show_bug.cgi?id=438993 --- ChangeLog | 3 ++ .../rkwarddevice/rkgraphicsdevice_setup.cpp | 15 +++++++- .../rkwarddevice/rkgraphicsdevice_stubs.cpp | 36 +++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0210df6e..ae17bc62 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +--- Version 0.7.2b - UNRELEASED +- Fixed: Crash when attempting to use new graphics features in R 4.1.0 (esp. plotting using ggplot2) + --- Version 0.7.2 - Oct-16-2020 - Script preview keeps vertical scroll position when updating - Python development scripts have been ported to python3 diff --git a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_setup.cpp b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_setup.cpp index 9909639f..e215c090 100644 --- a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_setup.cpp +++ b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_setup.cpp @@ -216,6 +216,19 @@ bool RKGraphicsDeviceDesc::init (pDevDesc dev, double pointsize, const QStringLi #endif dev->newFrameConfirm = RKD_NewFrameConfirm; +#if R_VERSION >= R_Version (2, 14, 0) + dev->holdflush = RKD_HoldFlush; +#endif + +#if R_VERSION >= R_Version (4, 1, 0) + dev->setPattern = RKD_SetPattern; + dev->releasePattern = RKD_ReleasePattern; + dev->setClipPath = RKD_SetClipPath; + dev->releaseClipPath = RKD_ReleaseClipPath; + dev->setMask = RKD_SetMask; + dev->releaseMask = RKD_ReleaseMask; + dev->deviceVersion = 14; + dev->deviceClip = FALSE; // for now +#endif return true; } - diff --git a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp index 716a9511..b7be1609 100644 --- a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp +++ b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp @@ -579,5 +579,41 @@ void RKD_onExit (pDevDesc dev) { } dev->gettingEvent = (Rboolean) false; } +#endif + +#if R_VERSION >= R_Version (2, 14, 0) +int RKD_HoldFlush (pDevDesc dev, int level) { +#warning implement me + return 0; +} +#endif + +#if R_VERSION >= R_Version (4, 1, 0) +SEXP RKD_SetPattern (SEXP pattern, pDevDesc dd) { +#warning implement me + return R_NilValue; +} + +void RKD_ReleasePattern (SEXP ref, pDevDesc dd) { +#warning implement me +} + +SEXP RKD_SetClipPath (SEXP path, SEXP ref, pDevDesc dd) { +#warning implement me + return R_NilValue; +} + +void RKD_ReleaseClipPath (SEXP ref, pDevDesc dd) { +#warning implement me +} + +SEXP RKD_SetMask (SEXP path, SEXP ref, pDevDesc dd) { +#warning implement me + return R_NilValue; +} + +void RKD_ReleaseMask (SEXP ref, pDevDesc dd) { +#warning implement me +} #endif -- GitLab