event: register event handler functions, not code objects

(Bitbake rev: be647dac9d458ee4b289ff5f66ed95b311d398d8)

Signed-off-by: Chris Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Chris Larson
2011-04-04 09:41:41 -07:00
committed by Richard Purdie
parent 2d73cd1d32
commit 8cf28d706b

View File

@@ -62,18 +62,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 = []
@@ -148,7 +143,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