summaryrefslogtreecommitdiff
path: root/src/core.py
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2011-11-06 17:08:40 +0100
committerFlorent Le Coz <louiz@louiz.org>2011-11-06 17:08:40 +0100
commit200019574d66c1a04d25e23eb0a0fcda7c25f445 (patch)
treebe51843ce076412a5fdce1bd1e93b7482adb225d /src/core.py
parentb9c6f08a790358c990462287bed2062257c5ba7a (diff)
downloadpoezio-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.py13
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