Fix possible race condition when using force_call()
This commit is contained in:
parent
6b008d6c4d
commit
ab4dbff3e7
@ -82,6 +82,8 @@ class CoreProxy(gobject.GObject):
|
|||||||
def do_multicall(self, block=False):
|
def do_multicall(self, block=False):
|
||||||
if len(self._callbacks) == 0:
|
if len(self._callbacks) == 0:
|
||||||
return True
|
return True
|
||||||
|
# Remove the timer just in case this is a forced call..
|
||||||
|
gobject.source_remove(self._multi_timer)
|
||||||
|
|
||||||
if self._multi is not None and self.rpc_core is not None:
|
if self._multi is not None and self.rpc_core is not None:
|
||||||
try:
|
try:
|
||||||
@ -100,6 +102,8 @@ class CoreProxy(gobject.GObject):
|
|||||||
self.set_core_uri(None)
|
self.set_core_uri(None)
|
||||||
finally:
|
finally:
|
||||||
self._callbacks = []
|
self._callbacks = []
|
||||||
|
# Re-enable the timer
|
||||||
|
self._multi_timer = gobject.timeout_add(200, self.do_multicall)
|
||||||
|
|
||||||
self._multi = xmlrpclib.MultiCall(self.rpc_core)
|
self._multi = xmlrpclib.MultiCall(self.rpc_core)
|
||||||
return True
|
return True
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user