gnome-perl | Glib | unspecified
--- Comment #7 from Torsten Schoenfeld <kaffeetisch@...> 2011-05-15 15:52:57 UTC ---
Alright, I've finally convinced myself that my previous approach cannot work.
So I caved in and implemented what muppet has been suggesting all along: when
invoked from a non-main thread, hand the request over to the main loop so that
it gets executed on the main thread. This works fine in the following common
* main thread connects handler to a signal, then goes into main loop
* non-main thread gets created somewhere to do some work, then emits said
* our marshallers hands the request over to the main loop
* main loop executes the request on the main thread
It does not work, however, if the main thread is busy doing something else. In
this case, the main loop does not run, and so the signal invocation is blocked
until the main thread returns control to the main loop.
The attached patch, still containing some debug spew and FIXME question,
implements this approach in our normal signal marshaller, gperl_closure_invoke.
It does not fix custom signal marshallers, or stuff that uses direct
Comments, criticism, suggestions welcome.
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.