On Wed, 10 Mar 2010 15:10:50 +0100 "fka...@googlemail.com" <fka...@googlemail.com> wrote: > Chris Vine: > > > > I make heavy use of g_idle_add(), and encounter this problem: > > > It seems that the idle functions aren't called sometimes. > > [...] > > > Assuming that is right, any sources you add before calling > > gtk_main_quit() without returning control to the main loop will not > > be executed. I think it probably also means that if you call > > gtk_main_quit() in a GTK+ signal handler, which will have a higher > > priority than a default idle event, a stacked idle callback will > > also not be called (that depends on what the documentation that I > > have referred to means by "dispatched"). > > This might be the case here: I am definitly not calling > gtk_main_quit() too early, since I am sleeping in a loop > before calling it, waiting for my "pending idle function > counter" to become 0 (but it doesn't sometimes as > mentioned). However, the locking situation here really > prevents giving GTK+ back control while waiting. > > I assume this is the problem (since not occuring always I > can not yet say definitly this was the cause, though).
You could test it by running 'while (gtk_events_pending()) gtk_main_iteration();' immediately before the call to gtk_main_quit(), (or you could call 'while (g_main_context_pending(NULL)) g_main_context_iteration(NULL, FALSE)'). In either case, make it absolutely the last thing that is done before gtk_main_quit(). Chris _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list