From ca243ce4941dbc23ee1c546fd7d87cc19caf716d Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Wed, 9 Jan 2008 20:37:36 +0000 Subject: [PATCH] Fix FS#5797 (Codec failure with directory skip when in file browser, with dircache enabled). Marking the tree context to be reloaded too early would cause the new playlist to contain files that don't exist (correct directory but wrong filenames), in turn causing the codec failures. The fix is to call reload_directory() after the playlist has been created. I also added a sanity check to avoid loading an unknown codec, which was happening as a consequence of this issue. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16039 a1c6a512-1295-4272-9138-f99709370657 --- apps/playback.c | 9 ++++++--- apps/playlist.c | 10 +++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/apps/playback.c b/apps/playback.c index ed581cd36a..87773f89ef 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -1375,9 +1375,12 @@ static void codec_thread(void) { const char *codec_fn = get_codec_filename(curtrack_id3.codectype); - LOGFQUEUE("codec > codec Q_CODEC_LOAD_DISK"); - queue_post(&codec_queue, Q_CODEC_LOAD_DISK, - (intptr_t)codec_fn); + if (codec_fn) + { + LOGFQUEUE("codec > codec Q_CODEC_LOAD_DISK"); + queue_post(&codec_queue, Q_CODEC_LOAD_DISK, + (intptr_t)codec_fn); + } } } break; diff --git a/apps/playlist.c b/apps/playlist.c index 644329c5bf..b68a47e75d 100644 --- a/apps/playlist.c +++ b/apps/playlist.c @@ -654,8 +654,12 @@ static int create_and_play_dir(int direction, bool play_last) playlist_start(index, 0); #endif } + + /* we've overwritten the dircache when getting the next/previous dir, + so the tree browser context will need to be reloaded */ + reload_directory(); } - + return index; } @@ -1577,10 +1581,6 @@ static int get_next_dir(char *dir, bool is_forward, bool recursion) } } - /* we've overwritten the dircache so tree browser will need to be - reloaded */ - reload_directory(); - /* restore dirfilter & sort_dir */ *(tc->dirfilter) = dirfilter; global_settings.sort_dir = sort_dir;