On Tue, 11 Aug 2009 09:08:52 -0400
"Boggess Rod" <rbogg...@corefurnace.com> wrote:

> 
> At the risk of beating a dead horse, I've figured out what the problem
> is, I just don't understand why it's occurring or how to fix it.
> 
> If I call hscale's value-changed signal callback, I can return TRUE or
> FALSE, and it behaves as expected.  If I create a static variable,
> increment it, do a modulo 2 and return TRUE or FALSE on alternating
> returns, in every case, it behaves as expected.
> 
> However, when I create a message dialog, it re-enters the
> value-changed callback.  What's especially odd is that it re-enters
> when the message dialog is created, not when it's actually
> gtk_dialog_run().
> 
> Is this a threading issue?  I thought I was running the message dialog
> modally, and if so, they should be on the same thread.  Anyone know
> where I can find more info on this?

If you are writing a multi-threaded program and are trying to invoke
GTK+ functions from different theads without correctly using the GDK
global lock then you will find all sorts of problems, of which the one
you have observed will be the least of them.  Whether you happen to be
operating on a modal or non-modal dialog is irrelevant to that.

Personally I should avoid the GDK global lock and only call GDK/GTK+
functions in the main program thread, and communicate with it from
worker threads using eg g_idle_add*.  In a complicated program, you
will end up with a much cleaner and more intelligible program.  You will
have to do that anyway under windows as the GDK lock does not operate
under windows.

Chris

_______________________________________________
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