Lock create_renderer_kwargs separately from configs

This commit is contained in:
ZyX 2013-04-03 07:38:53 +04:00
parent 33d32498b9
commit 2a0e601995

View File

@ -160,6 +160,7 @@ class Powerline(object):
self.config_paths = self.get_config_paths() self.config_paths = self.get_config_paths()
self.configs_lock = Lock() self.configs_lock = Lock()
self.cr_kwargs_lock = Lock()
self.create_renderer_kwargs = {} self.create_renderer_kwargs = {}
self.shutdown_event = Event() self.shutdown_event = Event()
self.configs = defaultdict(set) self.configs = defaultdict(set)
@ -396,12 +397,11 @@ class Powerline(object):
'''Lock renderer from modifications and pass all arguments further to '''Lock renderer from modifications and pass all arguments further to
``self.renderer.render()``. ``self.renderer.render()``.
''' '''
with self.cr_kwargs_lock:
if self.create_renderer_kwargs: if self.create_renderer_kwargs:
try: try:
with self.configs_lock: cr_kwargs = self.create_renderer(**self.create_renderer_kwargs)
cr_kwargs = self.create_renderer_kwargs.copy()
self.create_renderer_kwargs.clear() self.create_renderer_kwargs.clear()
self.create_renderer(**cr_kwargs)
except Exception as e: except Exception as e:
self.pl.exception('Failed to create renderer: {0}', str(e)) self.pl.exception('Failed to create renderer: {0}', str(e))
return self.renderer.render(*args, **kwargs) return self.renderer.render(*args, **kwargs)
@ -440,6 +440,7 @@ class Powerline(object):
pass pass
else: else:
kwargs['load_' + type] = True kwargs['load_' + type] = True
with self.cr_kwargs_lock:
if kwargs: if kwargs:
self.create_renderer_kwargs.update(kwargs) self.create_renderer_kwargs.update(kwargs)
self.shutdown_event.wait(self.interval) self.shutdown_event.wait(self.interval)