kete: don't let a second client start searching

pull/27/head
Peter Hutterer 2018-01-24 12:46:43 +10:00
parent 8bb971cdcd
commit 2ee934a81d
1 changed files with 6 additions and 9 deletions

View File

@ -178,7 +178,6 @@ class TuhiKeteManager(_DBusObject):
self.mainloop = GObject.MainLoop() self.mainloop = GObject.MainLoop()
self._devices = {} self._devices = {}
self._pairable_devices = {} self._pairable_devices = {}
self._searching = False
for objpath in self.property('Devices'): for objpath in self.property('Devices'):
device = TuhiKeteDevice(self, objpath) device = TuhiKeteDevice(self, objpath)
self._devices[device.address] = device self._devices[device.address] = device
@ -189,15 +188,10 @@ class TuhiKeteManager(_DBusObject):
@GObject.Property @GObject.Property
def searching(self): def searching(self):
return self._searching return self.proxy.get_cached_property('Searching')
@searching.setter
def searching(self, value):
self._searching = value
def start_search(self): def start_search(self):
self._pairable_devices = {} self._pairable_devices = {}
self.searching = True
self.proxy.StartSearch() self.proxy.StartSearch()
def stop_search(self): def stop_search(self):
@ -235,7 +229,6 @@ class TuhiKeteManager(_DBusObject):
def _on_signal_received(self, proxy, sender, signal, parameters): def _on_signal_received(self, proxy, sender, signal, parameters):
if signal == 'SearchStopped': if signal == 'SearchStopped':
self._searching = False
self.notify('searching') self.notify('searching')
elif signal == 'PairableDevice': elif signal == 'PairableDevice':
objpath = parameters[0] objpath = parameters[0]
@ -266,6 +259,10 @@ class Searcher(GObject.Object):
self.is_pairing = False self.is_pairing = False
def run(self): def run(self):
if self.manager.searching:
logger.error('Another client is already searching')
return
self.manager.connect('notify::searching', self._on_notify_search) self.manager.connect('notify::searching', self._on_notify_search)
self.manager.connect('pairable-device', self._on_pairable_device) self.manager.connect('pairable-device', self._on_pairable_device)
self.manager.start_search() self.manager.start_search()
@ -282,7 +279,7 @@ class Searcher(GObject.Object):
def _on_notify_search(self, manager, pspec): def _on_notify_search(self, manager, pspec):
if not manager.searching: if not manager.searching:
logger.info('Search timeout') logger.info('Search cancelled')
if not self.is_pairing: if not self.is_pairing:
self.manager.quit() self.manager.quit()