]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
event: register event handler functions, not code objects
authorChris Larson <chris_larson@mentor.com>
Mon, 4 Apr 2011 16:41:41 +0000 (09:41 -0700)
committerChris Larson <chris_larson@mentor.com>
Mon, 4 Apr 2011 21:23:09 +0000 (14:23 -0700)
Signed-off-by: Chris Larson <chris_larson@mentor.com>
lib/bb/event.py

index b289d36894256a13a4be856aa0d1eeb207ebafc5..289217aaad7594e34794e692e4ac187e729cf153 100644 (file)
@@ -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