Restart from the tree no longer hangs for 30 s on disconnect

With a wiresheet open, disconnecting first unsubscribed its components and
waited for the reply, which a restarting device never sends, so the editor
froze until the request timed out. After restart, reboot, quit or hibernate
the session is now closed without asking the device anything; a plain
Disconnect still unsubscribes first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-11 10:53:22 +03:00
co-authored by Claude Opus 5.5
parent f2b18923b7
commit db7b6632af
3 changed files with 10 additions and 7 deletions
+5 -4
View File
@@ -636,7 +636,7 @@ def _invoke_app_action(slot_name):
app_state.set_status(f"Invoked '{slot_name}' on device")
elif goes_down:
host = app_state.device_host
do_device_disconnect()
do_device_disconnect(device_down=True)
app_state.set_status(f"Sent '{slot_name}' to {host} and disconnected")
else:
app_state.set_status(f"Invoked '{slot_name}' on device")
@@ -2996,8 +2996,9 @@ def _load_live_schema(ds):
f"Missing kit manifests: {', '.join(missing)}", warn=True)
def do_device_disconnect():
"""Disconnects from the live device."""
def do_device_disconnect(device_down=False):
"""Disconnects from the live device. device_down: it was just told to restart (or
stop), so nothing is asked of it on the way out -- it would not answer."""
global _cov_poll_id
if _cov_poll_id is not None:
@@ -3006,7 +3007,7 @@ def do_device_disconnect():
ds = app_state.device_session
if ds is not None:
ds.disconnect()
ds.disconnect(unsubscribe=not device_down)
app_state.device_session = None
app_state.live_mode = False