From 3d5dd97c4816d7c783261b23a1b2eafb39f48996 Mon Sep 17 00:00:00 2001 From: "roman.artiukhin" Date: Sat, 7 Oct 2023 19:27:07 +0300 Subject: Fix playing_id3_sync not properly syncing resume data Fixes bookmark resume for tracks with different sample rates (should fix FS#13295) Change-Id: I69c77f9397f9230381c31e7cf8b586bcbacd06fe --- apps/playback.c | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) (limited to 'apps/playback.c') diff --git a/apps/playback.c b/apps/playback.c index 18a3bad5b7..c61fd9d399 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -1261,35 +1261,21 @@ static void playing_id3_sync(struct track_info *user_infop, id3_mutex_lock(); struct mp3entry *id3 = bufgetid3(user_infop->id3_hid); - struct mp3entry *playing_id3 = id3_get(PLAYING_ID3); pcm_play_lock(); - unsigned long e = playing_id3->elapsed; - unsigned long o = playing_id3->offset; - - id3_write(PLAYING_ID3, id3); - - if (elapsed == (unsigned long)-1) + if (id3) { - playing_id3->elapsed = e; - elapsed = 0; - } + if (elapsed != (unsigned long)-1) + id3->elapsed = elapsed; - if (offset == (unsigned long)-1) - { - playing_id3->offset = o; - offset = 0; + if (offset != (unsigned long)-1) + id3->offset = offset; } + id3_write(PLAYING_ID3, id3); pcm_play_unlock(); - if (id3) - { - id3->elapsed = elapsed; - id3->offset = offset; - } - id3_mutex_unlock(); } -- cgit v1.2.3