Private and Confidential wrote:
> Confirmed, the library I am wrapping runs in a separate thread and runs
> its callbacks from there. "context" is a good keyword and led me to dTHX
> and PERL_SET_CONTEXT. I haven't found a good example of using these yet.
> Adding dTHX did get me past dSP, but I die consistently in ENTER now.

Everything i know on the subject is encoded in gperl_marshal.h and
GPerlClosure.xs in the Glib extension.  I recall having to do "interesting"
work to get the interpreter context set up appropriately to allow callbacks on
other threads, but it was almost seven years ago and i couldn't begin to
explain it now.

http://git.gnome.org/browse/perl-Glib/tree/gperl_marshal.h
http://git.gnome.org/browse/perl-Glib/tree/GClosure.xs

Specifically, look at GPerlCallback, which is what gtk2-perl uses to wrap the
bare functions used as callbacks throughout the gnome api.

Things to look for:  gperl_callback_invoke(), GPERL_CALLBACK_MARSHAL_INIT().


-- 
muppet <scott at asofyet dot org>

Reply via email to