Reintenta solo la conexión cuando Windows aún retiene el enlace de una copia cerrada

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Este commit está contenido en:
2026-10-10 11:38:42 -05:00
padre e6e12f6c24
commit c8cd6ec041

10
app.py
Ver fichero

@@ -438,6 +438,7 @@ class App(tk.Tk):
self._lens_type = None
self._focus_reported = False
self._af_hint_shown = False
self._denied_retries = 0
self._notice = None
self.web_cmds = queue.Queue()
@@ -2145,6 +2146,14 @@ class App(tk.Tk):
elif kind == "error":
self.log(f"ERROR {ev['text']}")
self.notify(ev["text"], "error", 10 if ev.get("popup") else 6)
# Al abrir justo después de cerrar otra copia, Windows aún retiene el enlace unos segundos
# y la cámara responde «acceso denegado»: reintentamos solos dos veces antes de rendirnos.
if (not self.connected and "Acceso denegado" in ev["text"] and self._denied_retries < 2
and ev["text"].startswith("Conexión")):
self._denied_retries += 1
self.status_var.set(f"Enlace ocupado: reintento {self._denied_retries} de 2 en 10 s...")
self.after(10000, self.toggle_connect)
return
if not self.connected:
self.btn_connect.configure(state="normal")
self.btn_scan.configure(state="normal")
@@ -2203,6 +2212,7 @@ class App(tk.Tk):
self.btn_pair.configure(state="normal")
elif kind == "connected":
self.connected = True
self._denied_retries = 0
self._connect_time = time.time()
self._payload_count = 0
self._payload_warned = False