From 690c64c151777121afc2b39868f73b0fe666458e Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 9 May 2024 10:59:49 +1000 Subject: Fix playback after restoring queue on boot --- src/tangara/audio/audio_fsm.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/tangara/audio/audio_fsm.cpp') diff --git a/src/tangara/audio/audio_fsm.cpp b/src/tangara/audio/audio_fsm.cpp index a7c006f5..71f41938 100644 --- a/src/tangara/audio/audio_fsm.cpp +++ b/src/tangara/audio/audio_fsm.cpp @@ -191,6 +191,11 @@ void AudioState::react(const internal::StreamStarted& ev) { if (!sIsPaused && !is_in_state()) { transit(); + } else { + // Make sure everyone knows we've got a track ready to go, even if we're + // not playing it yet. This mostly matters when restoring the queue from + // disk after booting. + emitPlaybackUpdate(true); } } @@ -485,12 +490,13 @@ void Playback::react(const system_fsm::SdStateChanged& ev) { void Playback::react(const internal::StreamHeartbeat& ev) { sStreamCues.update(sOutput->samplesUsed()); - auto current = sStreamCues.current(); - if (!current.first) { - transit(); - } else { + if (sStreamCues.hasStream()) { emitPlaybackUpdate(false); + } else { + // Finished the current stream, and there's nothing upcoming. We must be + // finished. + transit(); } } -- cgit v1.2.3