diff options
author | roman.artiukhin <bahusdrive@gmail.com> | 2023-10-07 19:27:07 +0300 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2023-10-22 09:26:20 -0400 |
commit | 3d5dd97c4816d7c783261b23a1b2eafb39f48996 (patch) | |
tree | c63631bd0ddecae39171923084329964f0ac0f60 /apps/playback.c | |
parent | 4fb37ecbc692fdbb2e46aeaccf411caf631f9699 (diff) | |
download | rockbox-3d5dd97c4816d7c783261b23a1b2eafb39f48996.tar.gz rockbox-3d5dd97c4816d7c783261b23a1b2eafb39f48996.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
Diffstat (limited to 'apps/playback.c')
-rw-r--r-- | apps/playback.c | 26 |
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, | |||
1261 | id3_mutex_lock(); | 1261 | id3_mutex_lock(); |
1262 | 1262 | ||
1263 | struct mp3entry *id3 = bufgetid3(user_infop->id3_hid); | 1263 | struct mp3entry *id3 = bufgetid3(user_infop->id3_hid); |
1264 | struct mp3entry *playing_id3 = id3_get(PLAYING_ID3); | ||
1265 | 1264 | ||
1266 | pcm_play_lock(); | 1265 | pcm_play_lock(); |
1267 | 1266 | ||
1268 | unsigned long e = playing_id3->elapsed; | 1267 | if (id3) |
1269 | unsigned long o = playing_id3->offset; | ||
1270 | |||
1271 | id3_write(PLAYING_ID3, id3); | ||
1272 | |||
1273 | if (elapsed == (unsigned long)-1) | ||
1274 | { | 1268 | { |
1275 | playing_id3->elapsed = e; | 1269 | if (elapsed != (unsigned long)-1) |
1276 | elapsed = 0; | 1270 | id3->elapsed = elapsed; |
1277 | } | ||
1278 | 1271 | ||
1279 | if (offset == (unsigned long)-1) | 1272 | if (offset != (unsigned long)-1) |
1280 | { | 1273 | id3->offset = offset; |
1281 | playing_id3->offset = o; | ||
1282 | offset = 0; | ||
1283 | } | 1274 | } |
1275 | id3_write(PLAYING_ID3, id3); | ||
1284 | 1276 | ||
1285 | pcm_play_unlock(); | 1277 | pcm_play_unlock(); |
1286 | 1278 | ||
1287 | if (id3) | ||
1288 | { | ||
1289 | id3->elapsed = elapsed; | ||
1290 | id3->offset = offset; | ||
1291 | } | ||
1292 | |||
1293 | id3_mutex_unlock(); | 1279 | id3_mutex_unlock(); |
1294 | } | 1280 | } |
1295 | 1281 | ||