Re: Dialog boxes in seperate thread
- From: jcupitt gmail com
- To: "David Conley (FRD)" <dconley frd co uk>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Dialog boxes in seperate thread
- Date: Wed, 30 Apr 2008 15:15:37 +0100
2008/4/30 David Conley (FRD) <dconley frd co uk>:
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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]