Require cancel listener availability before entering recording state
This commit is contained in:
parent
aa77dbc395
commit
2b494851a6
2 changed files with 46 additions and 3 deletions
17
src/aman.py
17
src/aman.py
|
|
@ -77,11 +77,13 @@ class Daemon:
|
|||
self.vocabulary = VocabularyEngine(cfg.vocabulary)
|
||||
self._stt_hint_kwargs_cache: dict[str, Any] | None = None
|
||||
|
||||
def _arm_cancel_listener(self):
|
||||
def _arm_cancel_listener(self) -> bool:
|
||||
try:
|
||||
self.desktop.start_cancel_listener(lambda: self.cancel_recording())
|
||||
return True
|
||||
except Exception as exc:
|
||||
logging.error("failed to start cancel listener: %s", exc)
|
||||
return False
|
||||
|
||||
def _disarm_cancel_listener(self):
|
||||
try:
|
||||
|
|
@ -130,12 +132,23 @@ class Daemon:
|
|||
except Exception as exc:
|
||||
logging.error("record start failed: %s", exc)
|
||||
return
|
||||
if not self._arm_cancel_listener():
|
||||
try:
|
||||
stream.stop()
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
stream.close()
|
||||
except Exception:
|
||||
pass
|
||||
logging.error("recording start aborted because cancel listener is unavailable")
|
||||
return
|
||||
|
||||
self.stream = stream
|
||||
self.record = record
|
||||
prev = self.state
|
||||
self.state = State.RECORDING
|
||||
logging.debug("state: %s -> %s", prev, self.state)
|
||||
self._arm_cancel_listener()
|
||||
logging.info("recording started")
|
||||
if self.timer:
|
||||
self.timer.cancel()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue