summaryrefslogtreecommitdiffstats
path: root/bitbake-dev/lib/bb/ui/uievent.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake-dev/lib/bb/ui/uievent.py')
-rw-r--r--bitbake-dev/lib/bb/ui/uievent.py24
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
24client/server deadlocks. 24client/server deadlocks.
25""" 25"""
26 26
27import socket, threading 27import socket, threading, pickle
28from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler 28from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
29 29
30class BBUIEventQueue: 30class 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
98class UIXMLRPCServer (SimpleXMLRPCServer): 96class 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