From 8845b059335b044445526f38245d4258359bd475 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sat, 14 Mar 2020 20:04:19 +1000 Subject: [PATCH] make sure audio queue is cleared when transitioning between cards https://anki.tenderapp.com/discussions/beta-testing/1846-anki-2122-beta#comment_48150139 --- qt/aqt/browser.py | 2 +- qt/aqt/reviewer.py | 4 ++-- qt/aqt/sound.py | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index 43a29d447..53d426c85 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -1774,7 +1774,7 @@ where id in %s""" audio = c.answer_av_tags() av_player.play_tags(audio) else: - av_player.maybe_interrupt() + av_player.clear_queue_and_maybe_interrupt() txt = self.mw.prepare_card_text_for_display(txt) txt = gui_hooks.card_will_show( diff --git a/qt/aqt/reviewer.py b/qt/aqt/reviewer.py index b02b96ab5..fa5629e94 100644 --- a/qt/aqt/reviewer.py +++ b/qt/aqt/reviewer.py @@ -191,7 +191,7 @@ The front of this card is empty. Please run Tools>Empty Cards.""" if self.autoplay(c): av_player.play_tags(c.question_av_tags()) else: - av_player.maybe_interrupt() + av_player.clear_queue_and_maybe_interrupt() # render & update bottom q = self._mungeQA(q) @@ -236,7 +236,7 @@ The front of this card is empty. Please run Tools>Empty Cards.""" if self.autoplay(c): av_player.play_tags(c.answer_av_tags()) else: - av_player.maybe_interrupt() + av_player.clear_queue_and_maybe_interrupt() a = self._mungeQA(a) a = gui_hooks.card_will_show(a, c, "reviewAnswer") diff --git a/qt/aqt/sound.py b/qt/aqt/sound.py index 89b77e89a..ecf3f73cf 100644 --- a/qt/aqt/sound.py +++ b/qt/aqt/sound.py @@ -93,15 +93,16 @@ class AVPlayer: def play_tags(self, tags: List[AVTag]) -> None: """Clear the existing queue, then start playing provided tags.""" + self.clear_queue_and_maybe_interrupt() self._enqueued = tags[:] - self.maybe_interrupt() self._play_next_if_idle() def stop_and_clear_queue(self) -> None: self._enqueued = [] self._stop_if_playing() - def maybe_interrupt(self) -> None: + def clear_queue_and_maybe_interrupt(self) -> None: + self._enqueued = [] if self.interrupt_current_audio: self._stop_if_playing()