[bitbake-devel] [PATCH 3/4] event: add a means of filtering events internally
Paul Eggleton
paul.eggleton at linux.intel.com
Mon Dec 8 10:50:24 UTC 2014
When using external tinfoil-based utilities, it is useful to be able to
turn off most of the event handlers; for example sstate_eventhandler
doesn't like being sent events for any recipe which has been skipped.
Signed-off-by: Paul Eggleton <paul.eggleton at linux.intel.com>
---
lib/bb/event.py | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/lib/bb/event.py b/lib/bb/event.py
index 32df779..9645476 100644
--- a/lib/bb/event.py
+++ b/lib/bb/event.py
@@ -67,6 +67,7 @@ _ui_logfilters = {}
_ui_handler_seq = 0
_event_handler_map = {}
_catchall_handlers = {}
+_eventfilter = None
def execute_handler(name, handler, event, d):
event.data = d
@@ -94,6 +95,9 @@ def fire_class_handlers(event, d):
evt_hmap = _event_handler_map.get(eid, {})
for name, handler in _handlers.iteritems():
if name in _catchall_handlers or name in evt_hmap:
+ if _eventfilter:
+ if not _eventfilter(name, handler, event, d):
+ continue
execute_handler(name, handler, event, d)
ui_queue = []
@@ -204,6 +208,10 @@ def remove(name, handler):
"""Remove an Event handler"""
_handlers.pop(name)
+def set_eventfilter(func):
+ global _eventfilter
+ _eventfilter = func
+
def register_UIHhandler(handler):
bb.event._ui_handler_seq = bb.event._ui_handler_seq + 1
_ui_handlers[_ui_handler_seq] = handler
--
1.9.3
More information about the bitbake-devel
mailing list