diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-07-07 15:41:41 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-07-07 15:48:30 +0100 |
commit | cb241fb8544dfb05646dbae1a1b04e17878a466c (patch) | |
tree | e462bcf4a90c775591d0aebbc321aaac7377760c | |
parent | 412bfab8721ea317898a1974f6a7a0d0bea763df (diff) | |
download | bitbake-contrib-cb241fb8544dfb05646dbae1a1b04e17878a466c.tar.gz |
event: Queue offline events for the UI
Messages printed when no UI is connected (e.g. memres) are currently lost.
Use the existing queue mechanism to queue these until a UI attaches, then
replay them. This isn't ideal but better than the current situation of
losing them entirely.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | lib/bb/event.py | 11 | ||||
-rw-r--r-- | lib/bb/server/process.py | 2 | ||||
-rw-r--r-- | lib/bb/server/xmlrpc.py | 2 |
3 files changed, 12 insertions, 3 deletions
diff --git a/lib/bb/event.py b/lib/bb/event.py index 1462382f1..d5c5ef354 100644 --- a/lib/bb/event.py +++ b/lib/bb/event.py @@ -212,6 +212,12 @@ def fire(event, d): if worker_fire: worker_fire(event, d) else: + # If messages have been queued up, clear the queue + global _uiready, ui_queue + if _uiready and ui_queue: + for queue_event in ui_queue: + fire_ui_handlers(queue_event, d) + ui_queue = [] fire_ui_handlers(event, d) def fire_from_worker(event, d): @@ -291,7 +297,10 @@ def register_UIHhandler(handler, mainui=False): _ui_logfilters[_ui_handler_seq] = UIEventFilter(level, debug_domains) return _ui_handler_seq -def unregister_UIHhandler(handlerNum): +def unregister_UIHhandler(handlerNum, mainui=False): + if mainui: + global _uiready + _uiready = False if handlerNum in _ui_handlers: del _ui_handlers[handlerNum] return diff --git a/lib/bb/server/process.py b/lib/bb/server/process.py index 9ca2b6958..f8d676785 100644 --- a/lib/bb/server/process.py +++ b/lib/bb/server/process.py @@ -137,7 +137,7 @@ class ProcessServer(Process, BaseImplServer): logger.exception('Running command %s', command) self.event_queue.close() - bb.event.unregister_UIHhandler(self.event_handle.value) + bb.event.unregister_UIHhandler(self.event_handle.value, True) self.command_channel.close() self.cooker.shutdown(True) self.quitout.close() diff --git a/lib/bb/server/xmlrpc.py b/lib/bb/server/xmlrpc.py index a06007f5a..d0f5a6d6d 100644 --- a/lib/bb/server/xmlrpc.py +++ b/lib/bb/server/xmlrpc.py @@ -125,7 +125,7 @@ class BitBakeServerCommands(): """ Unregister a remote UI Event Handler """ - return bb.event.unregister_UIHhandler(handlerNum) + return bb.event.unregister_UIHhandler(handlerNum, True) def runCommand(self, command): """ |