caff7db493
Prevents `DeviceMgr.run()` from blocking the `Plugins` `DaemonThread` by scheduling the hww timeout check instead of awaiting its result on the `Plugins` thread. If something in the `_hwd_comms_executor` thread is waiting for user input, e.g. when setting up a hww in the wizard the user needs to unlock the hww for `HardwareClientBase.get_xpub()` to return, the `_hwd_comms_executor` is blocked. If then `DeviceMgr.run()` gets called by the `Plugins` `DaemonThread` concurrently and tries to check the hww timeout on the `_hwd_comms_executor` as well the `DaemonThread` is blocked too until the `_hwd_comms_executor` gets unblocked (and the `DaemonThread.job_lock` is taken. Now if something tries to take the `DaemonThread.job_lock` it blocks as well, so if a user e.g. tries to load a new plugin from the plugins dialog the whole gui thread will freeze until the hww gets unlocked.