On Wed, Jun 08, 2005 at 01:53:37PM +0200, Antoon Pardon wrote: > > | John K. Luebs reminds you: *don't forget gtk.threads_enter() and > | gtk.threads_leave()* around mainloop when accessing gtk code if you want > | your application to actually work threaded: > | > | gtk.gdk.threads_enter() > | gtk.main() > | gtk.gdk.threads_leave() > > I think this is wrong although it doesn't seem to hurt. > > >From the reference pages I understand that gtk.gdk.threads_init > initializes a lock and that gtk.gdk.threads_enter() acquires > this lock while gtk.gdk.threads_leave() releases it. In any case > it is all about marking critical sections. > > Now marking the gtk.main() as such a critical section would > mean that all other threads wanting to enter a critical section > with gtk.gdk calls would be stopped from doing so until gtk.main > had quit. That seems less than usefull. > No, because if and when gtk_main sleeps or waits, it will drop the lock at the proper time. This design keeps things consistent. Remember that in a GTK signal callback the lock will of course be held but it is valid to call gtk_main or an equivalent (gtk_dialog_run) method.
-jkl _______________________________________________ pygtk mailing list pygtk@daa.com.au http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/