From 42ca0f13ebcf08ed732078442f95f82558f2eb39 Mon Sep 17 00:00:00 2001 From: Miloslav Trmac Date: Tue, 14 Jul 2009 16:34:15 +0200 Subject: Add GDK locking around callbacks --- frontend/frontend_gtk.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'frontend') diff --git a/frontend/frontend_gtk.py b/frontend/frontend_gtk.py index fd3c91b..0a30749 100644 --- a/frontend/frontend_gtk.py +++ b/frontend/frontend_gtk.py @@ -46,9 +46,13 @@ class CallbacksMainWindow(object): def _o(pages, stopbutton): """Always return False -> remove from the idle queue after first execution""" - for i in range(pages.get_n_pages()): - pages.get_nth_page(i).set_sensitive(True) - stopbutton.set_sensitive(False) + gtk.gdk.threads_enter() + try: + for i in range(pages.get_n_pages()): + pages.get_nth_page(i).set_sensitive(True) + stopbutton.set_sensitive(False) + finally: + gtk.gdk.threads_leave() return False def worker(*args): @@ -537,7 +541,11 @@ class MainWindow(object): def _o(func, *args, **kwargs): """Always return False -> remove from the idle queue after first execution""" - func(*args, **kwargs) + try: + gtk.gdk.threads_enter() + func(*args, **kwargs) + finally: + gtk.gdk.threads_leave() return False def issue_state(self): -- cgit