> On Tue, 2007-02-27 at 19:57 +0100, Mateusz Szygenda wrote: > >> I use, gtkmm-2.4 and i'm writing a simple InstantMessager. I created a >> simple GUI using glademm and everything works fine, but i wanted to open >> conversation window when someone send message, so i created method which >> check for new messages and if there is some message it create new >> "conversation window". I run this method in new thread...and then the >> problem started. When method call "ConversationWindow" constructor, i >> receive many errors from GTK. I think method is okay(if i call this >> method without creating a new thread everything works fine, but app >> hangs up :) ). >> > > In general, you can only call GTK+ from one thread in your application > (this applies to all its bindings, such as GTKmm, too). There are a few > things you can do wrapped in gdk_threads_enter and gdk_threads_leave, > but in general, keep all your GTK+ calls in one thread. If you need > additional worker threads for network connectivity or something, fine, > but they'll need to communicate with your GUI thread using GDispatcher > and/or some thread-safe asynchronous queue mechanism. > > You basically have two options, for your situation: > 1. Use threads, offloading communication into worker threads, with > all the GUI still in the main thread. > 2. Use asynchronous I/O (GLib can integrate this in to your main > loop, calling functions when data is available or a pipe is > ready to send) and keep everything in one thread. > > Option 2 is probably easier to get right. Much less can go wrong in > strange ways. But whichever way you go, GTK+ can only work in one > thread. > > - Michael > > Thanks for that information. I will try this suggestions. I tried to change my code many times...many recompilations, but nice to hear that is no my fault :). One more time, thanks for your answer!
_______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list