diff options
Diffstat (limited to 'bitbake/lib/bb/ui/uievent.py')
-rw-r--r-- | bitbake/lib/bb/ui/uievent.py | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/bitbake/lib/bb/ui/uievent.py b/bitbake/lib/bb/ui/uievent.py index 8607d0523b..c2f830d530 100644 --- a/bitbake/lib/bb/ui/uievent.py +++ b/bitbake/lib/bb/ui/uievent.py | |||
@@ -44,7 +44,7 @@ class BBUIEventQueue: | |||
44 | for count_tries in range(5): | 44 | for count_tries in range(5): |
45 | ret = self.BBServer.registerEventHandler(self.host, self.port) | 45 | ret = self.BBServer.registerEventHandler(self.host, self.port) |
46 | 46 | ||
47 | if isinstance(ret, collections.Iterable): | 47 | if isinstance(ret, collections.abc.Iterable): |
48 | self.EventHandle, error = ret | 48 | self.EventHandle, error = ret |
49 | else: | 49 | else: |
50 | self.EventHandle = ret | 50 | self.EventHandle = ret |
@@ -65,35 +65,27 @@ class BBUIEventQueue: | |||
65 | self.server = server | 65 | self.server = server |
66 | 66 | ||
67 | self.t = threading.Thread() | 67 | self.t = threading.Thread() |
68 | self.t.setDaemon(True) | 68 | self.t.daemon = True |
69 | self.t.run = self.startCallbackHandler | 69 | self.t.run = self.startCallbackHandler |
70 | self.t.start() | 70 | self.t.start() |
71 | 71 | ||
72 | def getEvent(self): | 72 | def getEvent(self): |
73 | 73 | with bb.utils.lock_timeout(self.eventQueueLock): | |
74 | self.eventQueueLock.acquire() | 74 | if not self.eventQueue: |
75 | 75 | return None | |
76 | if len(self.eventQueue) == 0: | 76 | item = self.eventQueue.pop(0) |
77 | self.eventQueueLock.release() | 77 | if not self.eventQueue: |
78 | return None | 78 | self.eventQueueNotify.clear() |
79 | 79 | return item | |
80 | item = self.eventQueue.pop(0) | ||
81 | |||
82 | if len(self.eventQueue) == 0: | ||
83 | self.eventQueueNotify.clear() | ||
84 | |||
85 | self.eventQueueLock.release() | ||
86 | return item | ||
87 | 80 | ||
88 | def waitEvent(self, delay): | 81 | def waitEvent(self, delay): |
89 | self.eventQueueNotify.wait(delay) | 82 | self.eventQueueNotify.wait(delay) |
90 | return self.getEvent() | 83 | return self.getEvent() |
91 | 84 | ||
92 | def queue_event(self, event): | 85 | def queue_event(self, event): |
93 | self.eventQueueLock.acquire() | 86 | with bb.utils.lock_timeout(self.eventQueueLock): |
94 | self.eventQueue.append(event) | 87 | self.eventQueue.append(event) |
95 | self.eventQueueNotify.set() | 88 | self.eventQueueNotify.set() |
96 | self.eventQueueLock.release() | ||
97 | 89 | ||
98 | def send_event(self, event): | 90 | def send_event(self, event): |
99 | self.queue_event(pickle.loads(event)) | 91 | self.queue_event(pickle.loads(event)) |