2010/8/4 Tomas Soltys <tomas.sol...@range-software.com>:
> Hi,
>
> So what you suggest is to have gdk_threads_enter and gdk_threads_leave at
> the beginning and at the end of the idle function?
>
> Is this really intended?
YES,
check http://library.gnome.org/devel/gdk/unstable/gdk3-Threads.html

Idles, timeouts, and input functions from GLib, such as g_idle_add(),
are executed outside of the main GTK+ lock. So, if you need to call
GTK+ inside of such a callback, you must surround the callback with a
gdk_threads_enter()/gdk_threads_leave() pair or use
gdk_threads_add_idle_full() which does this for you. However, event
dispatching from the mainloop is still executed within the main GTK+
lock, so callback functions connected to event signals like
GtkWidget::button-press-event, do not need thread protection.

Regards
KC


>
> Anyway, thanks for your help.
>
> Regards,
> Tomas
>
>> Hi.
>>
>> You're having troubles because gtk_main_iteration_do() does it's own
>> unlock/lock cycle.
>>
>> When your idle callback is executed, your mutex is unlocked.
>> gtk_main_iteration_do() "unlocks" it again, executes whatever is there
>> to be executed and locks it. Now control returns back to main loop,
>> which tries to lock mutex and here you have your lock.
>>
>> Tadej
>>
>> --
>> Tadej Borovšak
>> tadeboro.blogspot.com
>> tadeb...@gmail.com
>> tadej.borov...@gmail.com
>>
>
>
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to