Tray exit lag fix

This commit is contained in:
Flowseal 2026-03-04 18:04:15 +03:00
parent 41d7923079
commit a57be0971f
2 changed files with 21 additions and 3 deletions

View File

@ -790,7 +790,14 @@ async def _run(port: int, dc_opt: Dict[int, Optional[str]],
async def wait_stop(): async def wait_stop():
await stop_event.wait() await stop_event.wait()
server.close() server.close()
await server.wait_closed() me = asyncio.current_task()
for task in list(asyncio.all_tasks()):
if task is not me:
task.cancel()
try:
await server.wait_closed()
except asyncio.CancelledError:
pass
asyncio.create_task(wait_stop()) asyncio.create_task(wait_stop())
async with server: async with server:

View File

@ -51,6 +51,7 @@ _stop_event: Optional[threading.Event] = None
_async_stop: Optional[object] = None _async_stop: Optional[object] = None
_tray_icon: Optional[object] = None _tray_icon: Optional[object] = None
_config: dict = {} _config: dict = {}
_exiting: bool = False
log = logging.getLogger("tg-ws-tray") log = logging.getLogger("tg-ws-tray")
@ -198,7 +199,7 @@ def stop_proxy():
loop, stop_ev = _async_stop loop, stop_ev = _async_stop
loop.call_soon_threadsafe(stop_ev.set) loop.call_soon_threadsafe(stop_ev.set)
if _proxy_thread: if _proxy_thread:
_proxy_thread.join(timeout=5) _proxy_thread.join(timeout=2)
_proxy_thread = None _proxy_thread = None
log.info("Proxy stopped") log.info("Proxy stopped")
@ -401,8 +402,18 @@ def _on_open_logs(icon=None, item=None):
def _on_exit(icon=None, item=None): def _on_exit(icon=None, item=None):
global _exiting
if _exiting:
os._exit(0)
return
_exiting = True
log.info("User requested exit") log.info("User requested exit")
stop_proxy()
def _force_exit():
time.sleep(3)
os._exit(0)
threading.Thread(target=_force_exit, daemon=True, name="force-exit").start()
if icon: if icon:
icon.stop() icon.stop()