Browse Source

hw DeviceMgr: speed-up client_for_keystore() for common-case

This method is often called when there is already an existing paired
client for the keystore, in which case we can avoid scan_devices() -
which would needlessly take several seconds.
master
SomberNight 3 years ago
parent
commit
d821e26f6e
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 14
      electrum/plugin.py

14
electrum/plugin.py

@ -511,10 +511,16 @@ class DeviceMgr(ThreadJob):
if handler is None:
raise Exception(_("Handler not found for") + ' ' + plugin.name + '\n' + _("A library is probably missing."))
handler.update_status(False)
if devices is None:
devices = self.scan_devices()
client = self.client_by_pairing_code(
plugin=plugin, pairing_code=keystore.pairing_code(), handler=handler, devices=devices)
pcode = keystore.pairing_code()
client = None
# search existing clients first (fast-path)
if not devices:
client = self.client_by_pairing_code(plugin=plugin, pairing_code=pcode, handler=handler, devices=[])
# search clients again, now allowing a (slow) scan
if client is None:
if devices is None:
devices = self.scan_devices()
client = self.client_by_pairing_code(plugin=plugin, pairing_code=pcode, handler=handler, devices=devices)
if client is None and force_pair:
try:
info = self.select_device(plugin, handler, keystore, devices,

Loading…
Cancel
Save