Re: Multithreading and GTK widgets
- From: "Alan M. Evans" <ame1 extratech com>
- To: Michael Matthews <michael-a-matthews lycos com>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Multithreading and GTK widgets
- Date: Mon, 17 Oct 2005 07:02:59 -0700
On Sun, 2005-10-16 at 15:59, Michael Matthews wrote:
Hi!
I am converting my program to use multiple threads: the primary
thread for the GTK stuff, and the worker threads for all the
time-consuming work that will be performed in the background.
The GUI thread takes input from the user and copies it to a
global, shared, synchronized data pool which the worker threads
monitor. The workers, in turn, invoke GTK functions to write the
results to some list/tree views.
The problem I have run into is that the list/tree views are not
updating properly. They only show a portion of the data which
has been written to their models. If I minimize the app window
and then restore it, the missing data appears. What am I doing
wrong, and what should I do to resolve it?
Are you wrapping all your setters in calls to gdk_threads_enter/leave?
For example:
gdk_threads_enter();
GtkTreeIter iter;
gtk_list_store_append(model,&iter);
gtk_list_store_set(model,&iter,MY_COLUMN,my_data,-1);
gdk_threads_leave();
I would have the GUI thread update the list/tree models, but the
GUI thread spends most of its time sitting in gtk_main.
You will, of course, need to be sure you've done the right thing in your
main thread as well:
gdk_threads_init();
gdk_threads_enter();
gtk_main();
gdk_threads_leave();
-AME
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]