Daniel Greenidge
2016-Jul-25 18:15 UTC
[Rd] getGraphicsEvent() alternative for cairo graphics device?
Hi all, I'm writing an interactive plotting function for viewing fMRI datasets. Currently, I get keypresses using grDevices::getGraphicsEvent(). Unfortunately getGraphicsEvent() only supports the X11(type="Xlib") graphics device on Unix systems. The Xlib device doesn't support buffering (i.e. dev.hold() and dev.flush()), so redrawing the plots causes lots of flickering. Is there a way to get keypresses while using the cairo graphics device? Alternatively, is there a way to prevent flickering with the Xlib graphics device? Best, Daniel Greenidge
frederik at ofb.net
2016-Jul-25 19:17 UTC
[Rd] getGraphicsEvent() alternative for cairo graphics device?
Dear Daniel Greenidge, To enable getGraphicsEvent on Cairo, you have two patches to choose from: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=14364 https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16951 The second one is by me, and the first one is from five years ago by Hugo Mildenberger. Both patches are very simple, they move some lines enabling getGrahpicsEvent outside of a if(!cairo) statement. My patch also adds the ability to execute code (e.g. for animation) while the interface is idle. Top guy Duncan Murdoch has expressed that he doesn't have time to work on applying these patches, and I haven't had any responses from the rest of the R Core Team. I was thinking that perhaps your best bet is to try to create a package called e.g. "X11-fixes" which people can use to get a better X11 library (there is also a bug waiting to be fixed from 2001: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16702). I don't know if CRAN would accept such a package, or if you'd have to distribute it via GitHub, but R has excellent tools to facilitate the distribution of code via packages. Whether the R kernel exports enough functions to allow a package to take over event handling, I'm not sure. I was intending to look more into the details of this possibility but haven't had time. Best wishes, Frederick On Mon, Jul 25, 2016 at 02:15:59PM -0400, Daniel Greenidge wrote:> Hi all, > > I'm writing an interactive plotting function for viewing fMRI > datasets. Currently, I get keypresses using > grDevices::getGraphicsEvent(). > > Unfortunately getGraphicsEvent() only supports the X11(type="Xlib") > graphics device on Unix systems. The Xlib device doesn't support > buffering (i.e. dev.hold() and dev.flush()), so redrawing the plots > causes lots of flickering. > > Is there a way to get keypresses while using the cairo graphics > device? Alternatively, is there a way to prevent flickering with the > Xlib graphics device? > > Best, > Daniel Greenidge > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >
Paul Murrell
2016-Jul-25 21:23 UTC
[Rd] getGraphicsEvent() alternative for cairo graphics device?
Hi Taking a look at those patches is now on my todo list, so I may be in touch with both of you at some point to request some testing. Paul On 26/07/16 07:17, frederik at ofb.net wrote:> Dear Daniel Greenidge, > > To enable getGraphicsEvent on Cairo, you have two patches to choose > from: > > https://bugs.r-project.org/bugzilla/show_bug.cgi?id=14364 > https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16951 > > The second one is by me, and the first one is from five years ago by > Hugo Mildenberger. > > Both patches are very simple, they move some lines enabling > getGrahpicsEvent outside of a if(!cairo) statement. My patch also adds > the ability to execute code (e.g. for animation) while the interface > is idle. > > Top guy Duncan Murdoch has expressed that he doesn't have time to work > on applying these patches, and I haven't had any responses from the > rest of the R Core Team. I was thinking that perhaps your best bet is > to try to create a package called e.g. "X11-fixes" which people can > use to get a better X11 library (there is also a bug waiting to be > fixed from 2001: > https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16702). > > I don't know if CRAN would accept such a package, or if you'd have to > distribute it via GitHub, but R has excellent tools to facilitate the > distribution of code via packages. Whether the R kernel exports enough > functions to allow a package to take over event handling, I'm not > sure. I was intending to look more into the details of this > possibility but haven't had time. > > Best wishes, > > Frederick > > On Mon, Jul 25, 2016 at 02:15:59PM -0400, Daniel Greenidge wrote: >> Hi all, >> >> I'm writing an interactive plotting function for viewing fMRI >> datasets. Currently, I get keypresses using >> grDevices::getGraphicsEvent(). >> >> Unfortunately getGraphicsEvent() only supports the X11(type="Xlib") >> graphics device on Unix systems. The Xlib device doesn't support >> buffering (i.e. dev.hold() and dev.flush()), so redrawing the plots >> causes lots of flickering. >> >> Is there a way to get keypresses while using the cairo graphics >> device? Alternatively, is there a way to prevent flickering with the >> Xlib graphics device? >> >> Best, >> Daniel Greenidge >> >> ______________________________________________ >> R-devel at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Dr Paul Murrell Department of Statistics The University of Auckland Private Bag 92019 Auckland New Zealand 64 9 3737599 x85392 paul at stat.auckland.ac.nz http://www.stat.auckland.ac.nz/~paul/
Reasonably Related Threads
- getGraphicsEvent() alternative for cairo graphics device?
- getGraphicsEvent() alternative for cairo graphics device?
- getGraphicsEvent() alternative for cairo graphics device?
- getGraphicsEvent() alternative for cairo graphics device?
- getGraphicsEvent() alternative for cairo graphics device?