From 5b06ca0d284f28bf2e20e918f82f1f7fcc3dad09 Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Fri, 12 Oct 2007 21:42:17 +0200 Subject: [PATCH] Make dir skipping work correctly and probably improve regular skipping too --- apps/playback.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/playback.c b/apps/playback.c index dcfaf1190..1775e7c41 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -2252,12 +2252,16 @@ static void audio_update_trackinfo(void) 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; next_idx &= MAX_TRACK_MASK; if (tracks[next_idx].id3_hid > 0) copy_mp3entry(&nexttrack_id3, bufgetid3(tracks[next_idx].id3_hid)); + tracks[next_idx].taginfo_ready = (tracks[next_idx].id3_hid > 0); + ci.filesize = CUR_TI->filesize; curtrack_id3.elapsed = 0; curtrack_id3.offset = 0; @@ -3021,13 +3025,14 @@ static void audio_rebuffer(void) { logf("Forcing rebuffer"); + clear_track_info(CUR_TI); + /* Reset track pointers */ track_widx = track_ridx; audio_clear_track_entries(true); /* Fill the buffer */ last_peek_offset = -1; - CUR_TI->filesize = 0; ci.curpos = 0; if (!CUR_TI->taginfo_ready) @@ -3050,7 +3055,6 @@ static int audio_check_new_track(void) if (playlist_next_dir(ci.new_track)) { ci.new_track = 0; - CUR_TI->taginfo_ready = false; audio_rebuffer(); goto skip_done; } @@ -3118,7 +3122,6 @@ static int audio_check_new_track(void) if (ci.new_track >= track_count || ci.new_track <= track_count - MAX_TRACK) { ci.new_track = 0; - CUR_TI->taginfo_ready = false; audio_rebuffer(); goto skip_done; } @@ -3170,7 +3173,6 @@ static int audio_check_new_track(void) } else { - CUR_TI->taginfo_ready = false; audio_rebuffer(); } } -- 2.11.4.GIT