From 573dd463806b0d3ac9823d723e8206c8eaba844e Mon Sep 17 00:00:00 2001 From: learman Date: Sun, 26 Oct 2008 20:15:10 +0000 Subject: [PATCH] Try to fix FS#9502: end playback properly if no valid files were found in a playlist. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18891 a1c6a512-1295-4272-9138-f99709370657 --- apps/playback.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/playback.c b/apps/playback.c index 6cd581fd1..b2305949a 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -290,6 +290,7 @@ static void audio_thread(void); static void audio_initiate_track_change(long direction); static bool audio_have_tracks(void); static void audio_reset_buffer(void); +static void audio_stop_playback(void); /* Codec thread */ extern struct codec_api ci; @@ -1657,6 +1658,13 @@ static bool audio_load_track(size_t offset, bool start_play) logf("End-of-playlist"); memset(&lasttrack_id3, 0, sizeof(struct mp3entry)); filling = STATE_END_OF_PLAYLIST; + + if (curtrack_id3.length == 0 && curtrack_id3.filesize == 0) + { + /* Stop playback if no valid track was found. */ + audio_stop_playback(); + } + return false; } @@ -1692,6 +1700,7 @@ static bool audio_load_track(size_t offset, bool start_play) if (track_widx == track_ridx) { + /* TODO: Superfluos buffering call? */ buf_request_buffer_handle(tracks[track_widx].id3_hid); copy_mp3entry(&curtrack_id3, bufgetid3(tracks[track_widx].id3_hid)); curtrack_id3.offset = offset; -- 2.11.4.GIT