summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroman.artiukhin <bahusdrive@gmail.com>2023-10-07 19:27:07 +0300
committerAidan MacDonald <amachronic@protonmail.com>2023-10-22 09:26:20 -0400
commit3d5dd97c4816d7c783261b23a1b2eafb39f48996 (patch)
treec63631bd0ddecae39171923084329964f0ac0f60
parent4fb37ecbc692fdbb2e46aeaccf411caf631f9699 (diff)
downloadrockbox-3d5dd97c48.tar.gz
rockbox-3d5dd97c48.zip
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
-rw-r--r--apps/playback.c26
1 files changed, 6 insertions, 20 deletions
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();
}