gtk multithreaded apps and glib signals



hi all-

i'm getting a bit confused as to what i'm supposed to do to make sure multithreaded gtk apps don't do evil things. i'm writing a music player (which is a GObject), and the audio decoding and output are handled in a separate thread (let's call this "thread #2"). when an audio stream finishes playing, i want it to send a glib signal ("stream-ended"). obviously, thread #2 is what knows about the stream ending, and so logically it will call g_signal_emit(). do the signal handlers get called in thread #2, or in the main thread? if in thread #2, i assume i have to surround any gtk calls in the signal handler with gdk_threads_enter/leave(), correct?

if the signals are handled in thread #2, is there a way to have the signal get handled in the main thread? perhaps using g_idle_add() or g_timeout_add()? in that case, do i still nead the gdk_threads_enter/leave() pair?

i'm just trying to figure out the best way to do this; any suggestions would be appreciated.

thanks,
brian



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