diff options
author | Chris Larson <chris_larson@mentor.com> | 2011-04-04 09:41:41 -0700 |
---|---|---|
committer | Chris Larson <chris_larson@mentor.com> | 2011-04-04 14:23:09 -0700 |
commit | be647dac9d458ee4b289ff5f66ed95b311d398d8 (patch) | |
tree | 63858c9acadb2318389155f57e10d92596de62fd /lib/bb/event.py | |
parent | ee39de6856b628df792c4a56966528796fbe2c8e (diff) | |
download | bitbake-contrib-be647dac9d458ee4b289ff5f66ed95b311d398d8.tar.gz |
event: register event handler functions, not code objects
Signed-off-by: Chris Larson <chris_larson@mentor.com>
Diffstat (limited to 'lib/bb/event.py')
-rw-r--r-- | lib/bb/event.py | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/lib/bb/event.py b/lib/bb/event.py index b289d3689..289217aaa 100644 --- a/lib/bb/event.py +++ b/lib/bb/event.py @@ -63,18 +63,13 @@ def fire_class_handlers(event, d): if isinstance(event, logging.LogRecord): return - for handler in _handlers: - h = _handlers[handler] + for handler in _handlers.itervalues(): event.data = d - if type(h).__name__ == "code": - locals = {"e": event} - bb.utils.simple_exec(h, locals) - ret = bb.utils.better_eval("tmpHandler(e)", locals) - if ret is not None: - warnings.warn("Using Handled/NotHandled in event handlers is deprecated", - DeprecationWarning, stacklevel = 2) - else: - h(event) + ret = handler(event) + if ret is not None: + warnings.warn("Using Handled/NotHandled in event handlers is deprecated", + DeprecationWarning, stacklevel = 2) + del event.data ui_queue = [] @@ -149,7 +144,10 @@ def register(name, handler): if isinstance(handler, basestring): tmp = "def tmpHandler(e):\n%s" % handler comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event._registerCode") - _handlers[name] = comp + env = {} + bb.utils.simple_exec(comp, env) + func = bb.utils.better_eval("tmpHandler", env) + _handlers[name] = func else: _handlers[name] = handler |