Re: [Rhythmbox-devel] Bonobo interface in rhythmbox-0.9



On Mon, 2005-04-04 at 20:09 +1000, Jonathan Matthew wrote:
> I've been experiencing a lot of deadlocks when using rhythmbox-applet,
> which turned out to be caused by recursive GDK_THREADS_ENTER calls.
> 
> This was happening on gconf calls, which caused ORBit to process any
> incoming requests *within the gconf call*.  If the gconf call was made
> with the gdk lock held, and there was a bonobo remote request waiting,
> the bonobo request handler would try to take the gdk lock again.
> 
> Dropping the gdk lock before anything that could result in a gconf
> call looked way too hard, so I just hacked in gdk lock/unlock functions
> using a GStaticRecMutex instead of the GMutex the standard functions
> use.  This is patch-6 and patch-7 in my rhythmbox--remote--0.9 branch.

After looking at your code (and reading the gdk threads docs) I'm a bit
confused. Is it not necessary to call gdk_threads_init after
gdk_threads_set_lock_functions in your rb_threads_init function? For
sure you know this stuff better than me, but the docs say that every
process that wants to use threads has to call gdk_threads_init before
entering the gtk main loop. Moreover, it's written that g_thread_init
must be called before this function. Where is this done in rb?

Any comments to clear up my confusion appreciated. :-)

-- 
so long,
oliver

Public GPG Key: http://www.core-dump.info/olemke-public.asc
Fingerprint: 2389 0B2C 1AA8 4E3E D5AD 3B72 00DB ABDC 73ED C558

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]