From 7319ff629978bf77391ebcdcd9d01bca304ccb33 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sat, 11 Apr 2026 11:15:55 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20App=20beendet=20sich=20nicht=20mehr=20na?= =?UTF-8?q?ch=20Hotkey-=C3=84nderung=20in=20Einstellungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit run() wartete auf den Hotkey-Task direkt; beim Neustart des Listeners wurde dieser Task beendet und run() kehrte zurück. Jetzt wartet run() auf ein asyncio.Event (_quit_event), das nur durch _quit() gesetzt wird. Co-Authored-By: Claude Sonnet 4.6 --- whisper_local/__main__.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/whisper_local/__main__.py b/whisper_local/__main__.py index 3e7d242..f45a938 100644 --- a/whisper_local/__main__.py +++ b/whisper_local/__main__.py @@ -22,6 +22,7 @@ class App: self._config = config self._loop: asyncio.AbstractEventLoop | None = None self._hotkey_task: asyncio.Task | None = None + self._quit_event: asyncio.Event | None = None self.recorder = Recorder( sample_rate=config.sample_rate, @@ -63,8 +64,8 @@ class App: def _quit(self) -> None: """Beendet die Anwendung sauber.""" - if self._loop is not None: - self._loop.call_soon_threadsafe(self._loop.stop) + if self._loop is not None and self._quit_event is not None: + self._loop.call_soon_threadsafe(self._quit_event.set) def _open_settings(self) -> None: """Öffnet den Einstellungs-Dialog.""" @@ -97,10 +98,11 @@ class App: async def run(self) -> None: """Startet den Hauptloop.""" self._loop = asyncio.get_running_loop() + self._quit_event = asyncio.Event() logger.info("whisper-local gestartet, warte auf Hotkey...") self.tray.start() self._hotkey_task = asyncio.create_task(self.hotkey.listen()) - await self._hotkey_task + await self._quit_event.wait() def main():