From 527ce403eac0d0eda8a48f9dc124bc2f66a68b32 Mon Sep 17 00:00:00 2001 From: Miika Pekkarinen Date: Sun, 10 Jul 2005 08:46:12 +0000 Subject: The previous commit did not fix the metadata reading correctly. Now it should have been fixed. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7092 a1c6a512-1295-4272-9138-f99709370657 --- apps/playback.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'apps/playback.c') diff --git a/apps/playback.c b/apps/playback.c index fb96592511..c145e0589b 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -831,6 +831,16 @@ bool read_next_metadata(void) int next_track; int status; + next_track = track_widx; + if (tracks[track_widx].taginfo_ready) + next_track++; + + if (next_track >= MAX_TRACK) + next_track -= MAX_TRACK; + + if (tracks[next_track].taginfo_ready) + return true; + trackname = playlist_peek(last_peek_offset); if (!trackname) return false; @@ -838,11 +848,7 @@ bool read_next_metadata(void) fd = open(trackname, O_RDONLY); if (fd < 0) return false; - - next_track = track_ridx + 1; - if (next_track >= MAX_TRACK) - next_track -= MAX_TRACK; - + /* Start buffer refilling also because we need to spin-up the disk. */ filling = true; status = get_metadata(&tracks[next_track],fd,trackname,v1first); @@ -1187,8 +1193,8 @@ void audio_check_buffer(void) if (audio_load_track(0, false, last_peek_offset)) { last_peek_offset++; } else if (tracks[track_widx].filerem == 0 || fill_bytesleft == 0) { - if (audio_next_track() == NULL) - read_next_metadata(); + /* Read next unbuffered track's metadata as necessary. */ + read_next_metadata(); generate_postbuffer_events(); filling = false; -- cgit v1.2.3