diff options
-rw-r--r-- | lib/bb/cooker.py | 4 | ||||
-rw-r--r-- | lib/bb/cookerdata.py | 1 | ||||
-rw-r--r-- | lib/bb/event.py | 11 |
3 files changed, 13 insertions, 3 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py index e8686475b..4c0b56943 100644 --- a/lib/bb/cooker.py +++ b/lib/bb/cooker.py @@ -1455,7 +1455,7 @@ class Parser(multiprocessing.Process): self.init = init multiprocessing.Process.__init__(self) self.context = bb.utils.get_context().copy() - self.handlers = bb.event._handlers.copy() + self.handlers = bb.event.get_class_handlers().copy() def run(self): if self.init: @@ -1492,7 +1492,7 @@ class Parser(multiprocessing.Process): try: # Reset our environment and handlers to the original settings bb.utils.set_context(self.context.copy()) - bb.event._handlers = self.handlers.copy() + bb.event.set_class_handlers(self.handlers.copy()) return True, bb.cache.Cache.parse(filename, appends, self.cfg, caches_array) except Exception as exc: tb = sys.exc_info()[2] diff --git a/lib/bb/cookerdata.py b/lib/bb/cookerdata.py index de4331050..2247f8d3b 100644 --- a/lib/bb/cookerdata.py +++ b/lib/bb/cookerdata.py @@ -174,6 +174,7 @@ class CookerDataBuilder(object): self.tracking = params.tracking bb.utils.set_context(bb.utils.clean_context()) + bb.event.set_class_handlers(bb.event.clean_class_handlers()) self.data = bb.data.init() if self.tracking: self.data.enableTracking() diff --git a/lib/bb/event.py b/lib/bb/event.py index 11c063fcc..2826e3554 100644 --- a/lib/bb/event.py +++ b/lib/bb/event.py @@ -50,8 +50,17 @@ class Event(object): Registered = 10 AlreadyRegistered = 14 +def get_class_handlers(): + return _handlers + +def set_class_handlers(h): + _handlers = h + +def clean_class_handlers(): + return bb.compat.OrderedDict() + # Internal -_handlers = bb.compat.OrderedDict() +_handlers = clean_class_handlers() _ui_handlers = {} _ui_handler_seq = 0 |