aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-12-04 16:58:08 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-12-04 17:59:50 +0000
commit14cdd3b351d1ab23cb3ea5f853e403a53e67ac1c (patch)
tree824024cc0169a7228d80cad9e142156a697442d1 /lib
parent4214ffff2c8a2a1fe66cbade03d2fd9e22a682d2 (diff)
downloadbitbake-14cdd3b351d1ab23cb3ea5f853e403a53e67ac1c.tar.gz
uievent: Fix an init race
There is a race where the registerEventHandler() server call may happen in a different thread to the main UI, causing the main UI to see httplib.CannotSendRequest exceptions. This moves the call into the main thread, removing the init race and fixing errors I was seeing with the xmlrpc backend. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/bb/ui/uievent.py27
1 files changed, 14 insertions, 13 deletions
diff --git a/lib/bb/ui/uievent.py b/lib/bb/ui/uievent.py
index 28817a22f..0b9a836d0 100644
--- a/lib/bb/ui/uievent.py
+++ b/lib/bb/ui/uievent.py
@@ -37,6 +37,17 @@ class BBUIEventQueue:
self.BBServer = BBServer
self.clientinfo = clientinfo
+ server = UIXMLRPCServer(self.clientinfo)
+ self.host, self.port = server.socket.getsockname()
+
+ server.register_function( self.system_quit, "event.quit" )
+ server.register_function( self.send_event, "event.sendpickle" )
+ server.socket.settimeout(1)
+
+ self.EventHandle = self.BBServer.registerEventHandler(self.host, self.port)
+
+ self.server = server
+
self.t = threading.Thread()
self.t.setDaemon(True)
self.t.run = self.startCallbackHandler
@@ -73,19 +84,9 @@ class BBUIEventQueue:
def startCallbackHandler(self):
- server = UIXMLRPCServer(self.clientinfo)
- self.host, self.port = server.socket.getsockname()
-
- server.register_function( self.system_quit, "event.quit" )
- server.register_function( self.send_event, "event.sendpickle" )
- server.socket.settimeout(1)
-
- self.EventHandle = self.BBServer.registerEventHandler(self.host, self.port)
-
- self.server = server
- while not server.quit:
- server.handle_request()
- server.server_close()
+ while not self.server.quit:
+ self.server.handle_request()
+ self.server.server_close()
def system_quit( self ):
"""