summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorNicolas Pennequin <nicolas.pennequin@free.fr>2007-11-19 17:30:46 +0000
committerNicolas Pennequin <nicolas.pennequin@free.fr>2007-11-19 17:30:46 +0000
commit2ff513237dbff5ed9bf534dba11504902a15b392 (patch)
treedaae722a108ea5067ba78ac8eec480e46a296839 /apps
parentcb62c9705421a57b8da60cd0032ac5ef1b0291ca (diff)
downloadrockbox-2ff513237dbff5ed9bf534dba11504902a15b392.zip
rockbox-2ff513237dbff5ed9bf534dba11504902a15b392.tar.gz
rockbox-2ff513237dbff5ed9bf534dba11504902a15b392.tar.bz2
rockbox-2ff513237dbff5ed9bf534dba11504902a15b392.tar.xz
Fix FS#8040 (Gather Runtime Data not working) the right way. Also a few cosmetic changes and comments.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15696 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/playback.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/apps/playback.c b/apps/playback.c
index e136579..5b9f568 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -1443,20 +1443,23 @@ long audio_filebufused(void)
return (long) buf_used();
}
+/* Update track info after successful a codec track change */
static void audio_update_trackinfo(void)
{
+ /* Load the curent track's metadata into curtrack_id3 */
+ CUR_TI->taginfo_ready = (CUR_TI->id3_hid >= 0);
if (CUR_TI->id3_hid >= 0)
copy_mp3entry(&curtrack_id3, bufgetid3(CUR_TI->id3_hid));
- CUR_TI->taginfo_ready = (CUR_TI->id3_hid >= 0);
-
int next_idx = (track_ridx + 1) & MAX_TRACK_MASK;
-
tracks[next_idx].taginfo_ready = (tracks[next_idx].id3_hid >= 0);
- ci.filesize = CUR_TI->filesize;
+ /* Reset current position */
curtrack_id3.elapsed = 0;
curtrack_id3.offset = 0;
+
+ /* Update the codec API */
+ ci.filesize = CUR_TI->filesize;
ci.id3 = &curtrack_id3;
ci.curpos = 0;
ci.taginfo_ready = &CUR_TI->taginfo_ready;
@@ -2298,6 +2301,14 @@ static void audio_finalise_track_change(void)
wps_offset = 0;
automatic_skip = false;
}
+
+ /* Copy the track back to the main buffer */
+ if (prev_ti && prev_ti->id3_hid >= 0)
+ {
+ copy_mp3entry(bufgetid3(prev_ti->id3_hid), &prevtrack_id3);
+ }
+
+ /* Invalidate prevtrack_id3 */
prevtrack_id3.path[0] = 0;
if (prev_ti && prev_ti->audio_hid < 0)
@@ -2308,6 +2319,7 @@ static void audio_finalise_track_change(void)
if (track_changed_callback)
track_changed_callback(&curtrack_id3);
+
track_changed = true;
playlist_update_resume_info(audio_current_track());
}