diff options
author | Florent Le Coz <louiz@louiz.org> | 2011-11-06 17:08:40 +0100 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2011-11-06 17:08:40 +0100 |
commit | 200019574d66c1a04d25e23eb0a0fcda7c25f445 (patch) | |
tree | be51843ce076412a5fdce1bd1e93b7482adb225d /src/core.py | |
parent | b9c6f08a790358c990462287bed2062257c5ba7a (diff) | |
download | poezio-200019574d66c1a04d25e23eb0a0fcda7c25f445.tar.gz poezio-200019574d66c1a04d25e23eb0a0fcda7c25f445.tar.bz2 poezio-200019574d66c1a04d25e23eb0a0fcda7c25f445.tar.xz poezio-200019574d66c1a04d25e23eb0a0fcda7c25f445.zip |
Use threads RLock to avoid crash on simultaneous refresh and resize.
fixes #2180
Diffstat (limited to 'src/core.py')
-rw-r--r-- | src/core.py | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/core.py b/src/core.py index c1220e4b..29748f4b 100644 --- a/src/core.py +++ b/src/core.py @@ -45,6 +45,7 @@ from contact import Contact, Resource from text_buffer import TextBuffer from keyboard import read_char from theming import get_theme +from windows import g_lock # http://xmpp.org/extensions/xep-0045.html#errorstatus ERROR_AND_STATUS_CODES = { @@ -67,8 +68,6 @@ possible_show = {'available':None, 'xa':'xa' } -resize_lock = threading.Lock() - Status = collections.namedtuple('Status', 'show message') class Core(object): @@ -198,14 +197,16 @@ class Core(object): """ Resize the global_information_win only once at each resize. """ - self.information_win.resize(self.information_win_size, tabs.Tab.width, - tabs.Tab.height - 2 - self.information_win_size, 0) + with g_lock: + self.information_win.resize(self.information_win_size, tabs.Tab.width, + tabs.Tab.height - 2 - self.information_win_size, 0) def resize_global_info_bar(self): """ Resize the GlobalInfoBar only once at each resize """ - self.tab_win.resize(1, tabs.Tab.width, tabs.Tab.height - 2, 0) + with g_lock: + self.tab_win.resize(1, tabs.Tab.width, tabs.Tab.height - 2, 0) def on_exception(self, typ, value, trace): """ @@ -692,7 +693,7 @@ class Core(object): tabs.Tab.resize(self.stdscr) self.resize_global_information_win() self.resize_global_info_bar() - with resize_lock: + with g_lock: for tab in self.tabs: if config.get('lazy_resize', 'true') == 'true': tab.need_resize = True |