summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroman.artiukhin <bahusdrive@gmail.com>2023-11-01 11:21:59 +0200
committerroman.artiukhin <bahusdrive@gmail.com>2023-11-01 16:24:32 +0200
commit63f75d22b4a87b545e49f13beffe23c723aa9712 (patch)
treea39a2540f491fed6ade6bed0decfe68133bfde03
parent11b8336c64a54e376d22722b7bf8e5af902b9fba (diff)
downloadrockbox-63f75d22b4.tar.gz
rockbox-63f75d22b4.zip
Fix potential stuck on auto track change when buffering is stopped
pcmbuf might wait for next track for proper crossfade/gapeless playback (see pcmbuf_start_track_change). It's not going to happen with stopped buffering. Fixup for 831faa3b (#5394) Change-Id: I969878d13a9f976566eef5b975beb1687b519a37
-rw-r--r--apps/playback.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 7a2790cbe2..7ea44a047f 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -2690,12 +2690,18 @@ static void audio_on_codec_complete(int status)
struct track_info info;
bool have_track = track_list_advance_current(1, &info);
- if (!have_track || (info.audio_hid < 0 && filling != STATE_STOPPED))
+ if (!have_track || info.audio_hid < 0)
{
bool end_of_playlist = false;
if (have_track)
{
+ if (filling == STATE_STOPPED)
+ {
+ audio_begin_track_change(TRACK_CHANGE_END_OF_DATA, trackstat);
+ return;
+ }
+
/* Track load is not complete - it might have stopped on a
full buffer without reaching the audio handle or we just
arrived at it early