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-08 13:29:54 +0100 |
| commit | 35846a39614815032e4db0d2f26709983a9802d7 (patch) | |
| tree | 093fee55cef231d49694405925ecfbc1bbb3464f | |
| parent | 9245c3b87fd56cd157de8f3e8ba1032a3a6be286 (diff) | |
| download | poky-35846a39614815032e4db0d2f26709983a9802d7.tar.gz | |
bitbake: 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.
(Bitbake rev: cb241fb8544dfb05646dbae1a1b04e17878a466c)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | bitbake/lib/bb/event.py | 11 | ||||
| -rw-r--r-- | bitbake/lib/bb/server/process.py | 2 | ||||
| -rw-r--r-- | bitbake/lib/bb/server/xmlrpc.py | 2 |
3 files changed, 12 insertions, 3 deletions
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py index 1462382f10..d5c5ef3544 100644 --- a/bitbake/lib/bb/event.py +++ b/bitbake/lib/bb/event.py | |||
| @@ -212,6 +212,12 @@ def fire(event, d): | |||
| 212 | if worker_fire: | 212 | if worker_fire: |
| 213 | worker_fire(event, d) | 213 | worker_fire(event, d) |
| 214 | else: | 214 | else: |
| 215 | # If messages have been queued up, clear the queue | ||
| 216 | global _uiready, ui_queue | ||
| 217 | if _uiready and ui_queue: | ||
| 218 | for queue_event in ui_queue: | ||
| 219 | fire_ui_handlers(queue_event, d) | ||
| 220 | ui_queue = [] | ||
| 215 | fire_ui_handlers(event, d) | 221 | fire_ui_handlers(event, d) |
| 216 | 222 | ||
| 217 | def fire_from_worker(event, d): | 223 | def fire_from_worker(event, d): |
| @@ -291,7 +297,10 @@ def register_UIHhandler(handler, mainui=False): | |||
| 291 | _ui_logfilters[_ui_handler_seq] = UIEventFilter(level, debug_domains) | 297 | _ui_logfilters[_ui_handler_seq] = UIEventFilter(level, debug_domains) |
| 292 | return _ui_handler_seq | 298 | return _ui_handler_seq |
| 293 | 299 | ||
| 294 | def unregister_UIHhandler(handlerNum): | 300 | def unregister_UIHhandler(handlerNum, mainui=False): |
| 301 | if mainui: | ||
| 302 | global _uiready | ||
| 303 | _uiready = False | ||
| 295 | if handlerNum in _ui_handlers: | 304 | if handlerNum in _ui_handlers: |
| 296 | del _ui_handlers[handlerNum] | 305 | del _ui_handlers[handlerNum] |
| 297 | return | 306 | return |
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py index 9ca2b6958d..f8d6767855 100644 --- a/bitbake/lib/bb/server/process.py +++ b/bitbake/lib/bb/server/process.py | |||
| @@ -137,7 +137,7 @@ class ProcessServer(Process, BaseImplServer): | |||
| 137 | logger.exception('Running command %s', command) | 137 | logger.exception('Running command %s', command) |
| 138 | 138 | ||
| 139 | self.event_queue.close() | 139 | self.event_queue.close() |
| 140 | bb.event.unregister_UIHhandler(self.event_handle.value) | 140 | bb.event.unregister_UIHhandler(self.event_handle.value, True) |
| 141 | self.command_channel.close() | 141 | self.command_channel.close() |
| 142 | self.cooker.shutdown(True) | 142 | self.cooker.shutdown(True) |
| 143 | self.quitout.close() | 143 | self.quitout.close() |
diff --git a/bitbake/lib/bb/server/xmlrpc.py b/bitbake/lib/bb/server/xmlrpc.py index a06007f5ac..d0f5a6d6da 100644 --- a/bitbake/lib/bb/server/xmlrpc.py +++ b/bitbake/lib/bb/server/xmlrpc.py | |||
| @@ -125,7 +125,7 @@ class BitBakeServerCommands(): | |||
| 125 | """ | 125 | """ |
| 126 | Unregister a remote UI Event Handler | 126 | Unregister a remote UI Event Handler |
| 127 | """ | 127 | """ |
| 128 | return bb.event.unregister_UIHhandler(handlerNum) | 128 | return bb.event.unregister_UIHhandler(handlerNum, True) |
| 129 | 129 | ||
| 130 | def runCommand(self, command): | 130 | def runCommand(self, command): |
| 131 | """ | 131 | """ |
