Okay I found a workaround:

def helper():
   *gtk.gdk.threads_enter()*
   putMessageBox(...)
*    gtk.gdk.threads_leave()*
gobject.idle_add(helper)

But why do I have to do that? Note that I call the above from the main thread, no multithreading involved. Please can somebody explain why this is necessary?


Andreas Sommer wrote:
Hi,

I have a function /putMessageBox/ which shows a message box dialog like this (it's Python but I think it's not specific to that language):

...
dialog.run()
dialog.hide()
...

Calling the function normally from somewhere in the main thread works, but when I execute it with

def helper():
    putMessageBox(...)
gobject.idle_add(helper)

it deadlocks as soon as I press the OK button on the dialog. The dialog does not disappear, the buttons stays pressed and the complete application is stuck. Same with timeout_add, of course.

If I replace run() by show(), which of course shows the dialog only for some nanoseconds, the deadlock does not occur.

Do you know what the problem is??
------------------------------------------------------------------------

_______________________________________________
gtk-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-list
_______________________________________________
gtk-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to