From 5eb2f60afb38617633da4b7d6130e30960918a27 Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Sun, 17 Jul 2011 13:30:48 +0000 Subject: [PATCH] Revert r30030 "Remove unused code path from playlist_create_ex()." It breaks playlist viewing when playback is stopped (the code path wasn't so unused). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30150 a1c6a512-1295-4272-9138-f99709370657 --- apps/playlist.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/apps/playlist.c b/apps/playlist.c index f645d662db..ae6ea900d2 100644 --- a/apps/playlist.c +++ b/apps/playlist.c @@ -2693,10 +2693,8 @@ void playlist_set_last_shuffled_start(void) /* * Create a new playlist If playlist is not NULL then we're loading a * playlist off disk for viewing/editing. The index_buffer is used to store - * playlist indices (required for and only used if playlist != NULL). The - * temp_buffer is used as a scratchpad when loading indices. - * - * returns <0 on failure + * playlist indices (required for and only used if !current playlist). The + * temp_buffer (if not NULL) is used as a scratchpad when loading indices. */ int playlist_create_ex(struct playlist_info* playlist, const char* dir, const char* file, @@ -2707,8 +2705,6 @@ int playlist_create_ex(struct playlist_info* playlist, playlist = ¤t_playlist; else { - if (!index_buffer) - return -1; /* Initialize playlist structure */ int r = rand() % 10; playlist->current = false; @@ -2719,19 +2715,30 @@ int playlist_create_ex(struct playlist_info* playlist, playlist->fd = -1; playlist->control_fd = -1; - int num_indices = index_buffer_size / sizeof(int); + if (index_buffer) + { + int num_indices = index_buffer_size / sizeof(int); #ifdef HAVE_DIRCACHE - num_indices /= 2; + num_indices /= 2; #endif - if (num_indices > global_settings.max_files_in_playlist) - num_indices = global_settings.max_files_in_playlist; + if (num_indices > global_settings.max_files_in_playlist) + num_indices = global_settings.max_files_in_playlist; - playlist->max_playlist_size = num_indices; - playlist->indices = index_buffer; + playlist->max_playlist_size = num_indices; + playlist->indices = index_buffer; #ifdef HAVE_DIRCACHE playlist->filenames = (int*)&playlist->indices[num_indices]; #endif + } + else + { + playlist->max_playlist_size = current_playlist.max_playlist_size; + playlist->indices = current_playlist.indices; +#ifdef HAVE_DIRCACHE + playlist->filenames = current_playlist.filenames; +#endif + } playlist->buffer_size = 0; playlist->buffer = NULL;