Re: gtk and multithreading



Hmm.  How did you "set flags" for the main thread to act
upon it?  Did you have to emit some sort of signal?
when running gtk_main() the only way to interact with it 
seems to be with signals or events...

what you're saying makes sense...I just don't know how to
do it!

Thanks.
-Brad

Ralph Walden wrote:
> 
> I had a similar problem using threads in a GTK application.
> My problem was that my final gtk_main_quit would not end the
> application.  I suppose it has to do with GTK not enjoying
> multiple threads calling into GTK functions.
> 
> I solved my problem by making darn sure that my worker thread
> made no GTK calls, just setting flags for the main thread to
> act upon.  I know that there are gdk functions for thread enter/exit,
> but I don't understand how to use them.
> 
> Do you have to wrap EVERY call to any gtk/gdk API functions with the
> thread enter/exit calls in a multi-threaded app?
> 
> Is there a threading FAQ for GTK?
> 
> Thanks all,
> 
> Ralph Walden
> 
> Brad House wrote:
> >
> > I've got a problem.
> >
> > The main program I have calls gtk_main()
> > and everything works great until I get into threads.
> >
> > What I'm trying to do is call a thread to connect to a remote
> > server. And when it recieves a response, it needs to pop up a
> > window showing the response.
> >
> > Well anyhow it works for the most part...I'm using libglade
> > so I'm doing a gtk_widget_show(widget);  where the widget has
> > already been referenced and hidden, etc.  But the use of
> > libglade should be most irrelevant.
> >
> > the only problem is that the widget won't display until I move
> > the mouse...
> >
> > if I use gtk_widget_show_now(widget) instead it gives me an error
> > about the main loop running in another thread, but again it displays
> > properly as soon as I move the mouse.
> >
> > The only solution I can think of is to emit an event of some sort, and
> > have the main loop capture the event and show the window for me instead
> > of having my thread do it, but this is my first attempt at creating any
> > GUI ... ever ... anywhere. So, the whole event structure is new to me
> > (but I seem to have everything else besides threads down!)
> >
> > Also, I looked at the example in the FAQ, and it IS showing a redraw
> > of a text field.  So it seems as though a thread can update the GUI,
> > so this really confuses me...maybe I'm not using the gdk_enter_thread()
> > stuff properly....
> >
> > Any help would be much appreciated...thank you.
> >
> > -----------------------------
> > Brad House
> > Sr. Developer
> > Main Street Softworks, Inc.
> >
> > brad mainstreetsoftworks com
> > (352) 378-8228
> > -----------------------------
> >
> > _______________________________________________
> > gtk-list mailing list
> > gtk-list gnome org
> > http://mail.gnome.org/mailman/listinfo/gtk-list
> 
> --
> 
> Ralph E. Walden
> Tripos, Inc.
> rwalden tripos com

-- 
-----------------------------
Brad House
Sr. Developer
Main Street Softworks, Inc.

brad mainstreetsoftworks com
(352) 378-8228
-----------------------------




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]