tuse another lock for hid operations - electrum - Electrum Bitcoin wallet
HTML git clone https://git.parazyd.org/electrum
DIR Log
DIR Files
DIR Refs
DIR Submodules
---
DIR commit 49a5994b291293b1bda9f891a8b4c6ca886e3560
DIR parent 82a33bf89e782d93b0ba5bbffefb85a52db8e7b3
HTML Author: ThomasV <thomasv@electrum.org>
Date: Sat, 27 Aug 2016 15:46:01 +0200
use another lock for hid operations
Diffstat:
M lib/plugins.py | 4 +++-
M plugins/trezor/plugin.py | 3 ++-
2 files changed, 5 insertions(+), 2 deletions(-)
---
DIR diff --git a/lib/plugins.py b/lib/plugins.py
t@@ -307,6 +307,7 @@ class DeviceMgr(ThreadJob, PrintError):
self.recognised_hardware = set()
# For synchronization
self.lock = threading.RLock()
+ self.hid_lock = threading.RLock()
self.config = config
def thread_jobs(self):
t@@ -490,7 +491,8 @@ class DeviceMgr(ThreadJob, PrintError):
# wallet libraries are not affected.
import hid
self.print_error("scanning devices...")
- hid_list = hid.enumerate(0, 0)
+ with self.hid_lock:
+ hid_list = hid.enumerate(0, 0)
# First see what's connected that we know about
devices = []
for d in hid_list:
DIR diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py
t@@ -136,7 +136,8 @@ class TrezorCompatiblePlugin(HW_PluginBase):
assert self.main_thread != threading.current_thread()
devmgr = self.device_manager()
handler = keystore.handler
- client = devmgr.client_for_keystore(self, handler, keystore, force_pair)
+ with devmgr.hid_lock:
+ client = devmgr.client_for_keystore(self, handler, keystore, force_pair)
# returns the client for a given keystore. can use xpub
if client:
client.used()