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): if isinstance(event, logging.LogRecord):
return return
for handler in _handlers: for handler in _handlers.itervalues():
h = _handlers[handler]
event.data = d event.data = d
if type(h).__name__ == "code": ret = handler(event)
locals = {"e": event} if ret is not None:
bb.utils.simple_exec(h, locals) warnings.warn("Using Handled/NotHandled in event handlers is deprecated",
ret = bb.utils.better_eval("tmpHandler(e)", locals) DeprecationWarning, stacklevel = 2)
if ret is not None:
warnings.warn("Using Handled/NotHandled in event handlers is deprecated",
DeprecationWarning, stacklevel = 2)
else:
h(event)
del event.data del event.data
ui_queue = [] ui_queue = []
@@ -148,7 +143,10 @@ def register(name, handler):
if isinstance(handler, basestring): if isinstance(handler, basestring):
tmp = "def tmpHandler(e):\n%s" % handler tmp = "def tmpHandler(e):\n%s" % handler
comp = bb.utils.better_compile(tmp, "tmpHandler(e)", "bb.event._registerCode") 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: else:
_handlers[name] = handler _handlers[name] = handler