diff options
| author | Magnus Holmgren <magnushol@gmail.com> | 2008-10-26 20:15:10 +0000 |
|---|---|---|
| committer | Magnus Holmgren <magnushol@gmail.com> | 2008-10-26 20:15:10 +0000 |
| commit | 1b9991c229dbc274b4ab85dd28e490f736ba02c8 (patch) | |
| tree | 5747237e6bc3de8cfa9bd792ef66f0f62bcb5403 /apps/playback.c | |
| parent | e511017293264eb514721c073451232c2945241e (diff) | |
| download | rockbox-1b9991c229dbc274b4ab85dd28e490f736ba02c8.zip rockbox-1b9991c229dbc274b4ab85dd28e490f736ba02c8.tar.gz rockbox-1b9991c229dbc274b4ab85dd28e490f736ba02c8.tar.bz2 rockbox-1b9991c229dbc274b4ab85dd28e490f736ba02c8.tar.xz | |
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
Diffstat (limited to 'apps/playback.c')
| -rw-r--r-- | apps/playback.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/apps/playback.c b/apps/playback.c index 6cd581f..b230594 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; |