diff options
Diffstat (limited to 'bitbake-dev/lib/bb/ui/uievent.py')
-rw-r--r-- | bitbake-dev/lib/bb/ui/uievent.py | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/bitbake-dev/lib/bb/ui/uievent.py b/bitbake-dev/lib/bb/ui/uievent.py index 23fdd0f961..36302f4da7 100644 --- a/bitbake-dev/lib/bb/ui/uievent.py +++ b/bitbake-dev/lib/bb/ui/uievent.py | |||
@@ -24,7 +24,7 @@ server and queue them for the UI to process. This process must be used to avoid | |||
24 | client/server deadlocks. | 24 | client/server deadlocks. |
25 | """ | 25 | """ |
26 | 26 | ||
27 | import socket, threading | 27 | import socket, threading, pickle |
28 | from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler | 28 | from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler |
29 | 29 | ||
30 | class BBUIEventQueue: | 30 | class BBUIEventQueue: |
@@ -37,8 +37,8 @@ class BBUIEventQueue: | |||
37 | self.BBServer = BBServer | 37 | self.BBServer = BBServer |
38 | 38 | ||
39 | self.t = threading.Thread() | 39 | self.t = threading.Thread() |
40 | self.t.setDaemon(True) | 40 | self.t.setDaemon(True) |
41 | self.t.run = self.startCallbackHandler | 41 | self.t.run = self.startCallbackHandler |
42 | self.t.start() | 42 | self.t.start() |
43 | 43 | ||
44 | def getEvent(self): | 44 | def getEvent(self): |
@@ -55,7 +55,6 @@ class BBUIEventQueue: | |||
55 | self.eventQueueNotify.clear() | 55 | self.eventQueueNotify.clear() |
56 | 56 | ||
57 | self.eventQueueLock.release() | 57 | self.eventQueueLock.release() |
58 | |||
59 | return item | 58 | return item |
60 | 59 | ||
61 | def waitEvent(self, delay): | 60 | def waitEvent(self, delay): |
@@ -63,16 +62,15 @@ class BBUIEventQueue: | |||
63 | return self.getEvent() | 62 | return self.getEvent() |
64 | 63 | ||
65 | def queue_event(self, event): | 64 | def queue_event(self, event): |
66 | |||
67 | self.eventQueueLock.acquire() | 65 | self.eventQueueLock.acquire() |
68 | self.eventQueue.append(event) | 66 | self.eventQueue.append(pickle.loads(event)) |
69 | self.eventQueueNotify.set() | 67 | self.eventQueueNotify.set() |
70 | self.eventQueueLock.release() | 68 | self.eventQueueLock.release() |
71 | 69 | ||
72 | def startCallbackHandler(self): | 70 | def startCallbackHandler(self): |
73 | 71 | ||
74 | server = UIXMLRPCServer() | 72 | server = UIXMLRPCServer() |
75 | self.host, self.port = server.socket.getsockname() | 73 | self.host, self.port = server.socket.getsockname() |
76 | 74 | ||
77 | server.register_function( self.system_quit, "event.quit" ) | 75 | server.register_function( self.system_quit, "event.quit" ) |
78 | server.register_function( self.queue_event, "event.send" ) | 76 | server.register_function( self.queue_event, "event.send" ) |
@@ -85,7 +83,7 @@ class BBUIEventQueue: | |||
85 | server.handle_request() | 83 | server.handle_request() |
86 | server.server_close() | 84 | server.server_close() |
87 | 85 | ||
88 | def system_quit( self ): | 86 | def system_quit( self ): |
89 | """ | 87 | """ |
90 | Shut down the callback thread | 88 | Shut down the callback thread |
91 | """ | 89 | """ |
@@ -97,11 +95,11 @@ class BBUIEventQueue: | |||
97 | 95 | ||
98 | class UIXMLRPCServer (SimpleXMLRPCServer): | 96 | class UIXMLRPCServer (SimpleXMLRPCServer): |
99 | 97 | ||
100 | def __init__( self, interface = ("localhost", 0) ): | 98 | def __init__( self, interface = ("localhost", 0) ): |
101 | self.quit = False | 99 | self.quit = False |
102 | SimpleXMLRPCServer.__init__( self, | 100 | SimpleXMLRPCServer.__init__( self, |
103 | interface, | 101 | interface, |
104 | requestHandler=SimpleXMLRPCRequestHandler, | 102 | requestHandler=SimpleXMLRPCRequestHandler, |
105 | logRequests=False, allow_none=True) | 103 | logRequests=False, allow_none=True) |
106 | 104 | ||
107 | def get_request(self): | 105 | def get_request(self): |
@@ -123,5 +121,5 @@ class UIXMLRPCServer (SimpleXMLRPCServer): | |||
123 | if request is None: | 121 | if request is None: |
124 | return | 122 | return |
125 | SimpleXMLRPCServer.process_request(self, request, client_address) | 123 | SimpleXMLRPCServer.process_request(self, request, client_address) |
126 | 124 | ||
127 | 125 | ||