2008/4/30 David Conley (FRD) <[EMAIL PROTECTED]>: > Are modal dialog boxes possible in threads? I have this call in a thread > seperate to the main gtk thread: > > gtk_dialog_run(GTK_DIALOG(errorDialog)); > > and obviously that locks that thread while the main thread continues but > nothing updates the display in the blocked thread and the app becomes > unresponsive.
GTK is happiest if you keep all gtk_* calls in the main thread, and if the main thread does (almost) nothing but run the gtk event loop. If you need to start a thread to do a long running task, don't call gtk stuff from the thread, instead send a message to the main thread and ask it to make the calls on the thread's behalf. This is easy to do with g_idle_add(), which you can call safely from a worker thread. Something like: on_button_click( .. { if (!app->bg_job) app->bg_job = g_thread_create( background_job .. } background_job ( .. { for (int i = 0; i < 100; i++) { char *str = g_strdup_printf ("... still working! %d", i); g_idle_add (process_message, str); sleep (1) } } process_message (.. char *str) { gtk_label_set (app->status, str); g_free (str); } John _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list