On 02/02/2023 7:24 p.m., Simon Urbanek wrote:
Duncan,
I don't know if it is best, but you can have a look at "background"[1] which is I believe
what "later" was inspired by. It is a very minimal example so should give you ideas on
how to do that in your package - it runs the R code on the main thread so it should be as close to
safe as one can get with asynchronous calls, just beware of reentrance. In your case I suspect that
you may already have an X11 fd that you can use in the unix handler - not sure what signaling you
need on Windows, though.
Thanks. Yours appears to have the advantage of being able to run R code
in the middle of a function call if that function calls R_ProcessEvents,
as Sys.sleep() does. I wonder why "later" didn't support that?
What I was hoping for would be something like R_PolledEvents, but it
should work on all systems, not just Unix-alikes. My goal is to
simplify rgl. Part of this means I'd like to minimize the system
dependence, since I no longer have easy access to a Windows machine for
testing.
Duncan
Cheers,
Simon
[1] - https://github.com/s-u/background
On Feb 3, 2023, at 10:53 AM, Duncan Murdoch <murdoch.dun...@gmail.com> wrote:
I'm updating low level stuff in the rgl package. I'm exploring using the GLFW
library to handle low level stuff instead of trying to do that myself.
Currently rgl has fairly ugly code to link into the R event loop. (It needs to
do this so that it hears about mouse movement, etc.) I'm hoping that someone
else has written better code than I could to do this. Is there a currently
recommended way to hook into the loop?
The kinds of things I need are getting events fairly frequently (e.g. 0.03
second delay if things aren't too busy) for code that doesn't involve R at all.
I will also occasionally want to call back into R; I don't really mind if
there's a bigger delay to wait for that to be safe.
I've seen the "later" package: it looks as though it might do what I need, but
the protection for R code seems to be all or nothing, i.e. if I want to evaluate an R
expression nothing else can be running, or if I want action while R code is running, I
can't involve R at all.
Duncan Murdoch
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel