Re: Dialog boxes in seperate thread
- From: "David Conley (FRD)" <dconley frd co uk>
- To: jcupitt gmail com
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Dialog boxes in seperate thread
- Date: Fri, 2 May 2008 09:47:38 +0100 (BST)
Hmmm thats annoying. In this case the thread needs to pause and wait for
user input so triggering the dialog in the root thread would allow the
worker thread to continue without the required user input.
Thanks for your help
Dave
Dave Conley
Programmer
Free Radical Design
http://www.frd.co.uk
On Wed, 30 Apr 2008, jcupitt gmail com wrote:
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]