From 6e299065ce031ab52848cfda14e8872c16f62fa4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 10 Apr 2018 17:51:40 +0200 Subject: [PATCH] Remove RARCH_MENU_CTL_PLAYLIST_ calls - use playlist_init_cached, playlist_get_cached, and playlist_free_cached from now on (defined in playlist.h) - no more menu dependencies on cached playlists --- command.c | 8 +---- menu/cbs/menu_cbs_ok.c | 77 ++++++++++++++++++----------------------- menu/drivers/xmb.c | 2 +- menu/menu_displaylist.c | 61 ++++++++++++++++++-------------- menu/menu_driver.c | 21 +---------- menu/menu_driver.h | 3 -- 6 files changed, 71 insertions(+), 101 deletions(-) diff --git a/command.c b/command.c index 7e8f38ef42..64b4f9f5f4 100644 --- a/command.c +++ b/command.c @@ -1708,14 +1708,8 @@ void command_playlist_update_write( const char *db_name) { playlist_t *plist = (playlist_t*)data; - playlist_t *playlist = NULL; + playlist_t *playlist = plist ? plist : playlist_get_cached(); - if (plist) - playlist = plist; -#ifdef HAVE_MENU - else - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist); -#endif if (!playlist) return; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index d3625fe160..c561763986 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1491,9 +1491,8 @@ static int action_ok_playlist_entry_collection(const char *path, if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return menu_cbs_exit(); - new_core_path[0] = '\0'; - - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &tmp_playlist); + new_core_path[0] = '\0'; + tmp_playlist = playlist_get_cached(); if (!tmp_playlist) { @@ -1540,17 +1539,18 @@ static int action_ok_playlist_entry_collection(const char *path, return ret; } - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &tmp_playlist); + tmp_playlist = playlist_get_cached(); - command_playlist_update_write( - tmp_playlist, - selection_ptr, - NULL, - NULL, - new_core_path, - core_info.inf->display_name, - NULL, - NULL); + if (tmp_playlist) + command_playlist_update_write( + tmp_playlist, + selection_ptr, + NULL, + NULL, + new_core_path, + core_info.inf->display_name, + NULL, + NULL); } else strlcpy(new_core_path, core_path, sizeof(new_core_path)); @@ -1656,14 +1656,12 @@ static int action_ok_playlist_entry_start_content(const char *path, const char *entry_label = NULL; const char *core_path = NULL; const char *core_name = NULL; - playlist_t *tmp_playlist = NULL; menu_handle_t *menu = NULL; + playlist_t *tmp_playlist = playlist_get_cached(); if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return menu_cbs_exit(); - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &tmp_playlist); - if (!tmp_playlist) { tmp_playlist = playlist_init( @@ -1713,18 +1711,18 @@ static int action_ok_playlist_entry_start_content(const char *path, return ret; } - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &tmp_playlist); + tmp_playlist = playlist_get_cached(); - command_playlist_update_write( - tmp_playlist, - selection_ptr, - NULL, - NULL, - new_core_path, - core_info.inf->display_name, - NULL, - NULL); - + if (tmp_playlist) + command_playlist_update_write( + tmp_playlist, + selection_ptr, + NULL, + NULL, + new_core_path, + core_info.inf->display_name, + NULL, + NULL); } if (!playlist || !menu_content_playlist_load(playlist, selection_ptr)) @@ -1754,8 +1752,7 @@ static int action_ok_audio_add_to_mixer(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { const char *entry_path = NULL; - playlist_t *tmp_playlist = NULL; - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &tmp_playlist); + playlist_t *tmp_playlist = playlist_get_cached(); if (!tmp_playlist) return -1; @@ -2986,16 +2983,13 @@ static int action_ok_reset_core_association(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { const char *tmp_path = NULL; - playlist_t *tmp_playlist = NULL; menu_handle_t *menu = NULL; - - if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) - return menu_cbs_exit(); - - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &tmp_playlist); + playlist_t *tmp_playlist = playlist_get_cached(); if (!tmp_playlist) return 0; + if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) + return menu_cbs_exit(); playlist_get_index(tmp_playlist, menu->rpl_entry_selection_ptr, @@ -3020,16 +3014,13 @@ static int action_ok_add_to_favorites_playlist(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { const char *tmp_path = NULL; - playlist_t *tmp_playlist = NULL; menu_handle_t *menu = NULL; - - if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) - return menu_cbs_exit(); - - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &tmp_playlist); + playlist_t *tmp_playlist = playlist_get_cached(); if (!tmp_playlist) return 0; + if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) + return menu_cbs_exit(); playlist_get_index(tmp_playlist, menu->rpl_entry_selection_ptr, &tmp_path, @@ -3045,7 +3036,6 @@ static int action_ok_delete_entry(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { size_t new_selection_ptr; - playlist_t *playlist = NULL; char *conf_path = NULL; char *def_conf_path = NULL; char *def_conf_music_path = NULL; @@ -3056,12 +3046,11 @@ static int action_ok_delete_entry(const char *path, char *def_conf_img_path = NULL; #endif menu_handle_t *menu = NULL; + playlist_t *playlist = playlist_get_cached(); if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return menu_cbs_exit(); - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist); - conf_path = playlist_get_conf_path(playlist); def_conf_path = playlist_get_conf_path(g_defaults.content_history); def_conf_music_path = playlist_get_conf_path(g_defaults.music_history); diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 4c979fe0e0..53ca07b3d7 100755 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1019,7 +1019,7 @@ static void xmb_update_thumbnail_path(void *data, unsigned i, char pos) goto end; } - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist); + playlist = playlist_get_cached(); if (playlist) { diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 043fcb9b6e..e370a774de 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2486,13 +2486,16 @@ static int menu_displaylist_parse_settings_enum(void *data, static void menu_displaylist_set_new_playlist( menu_handle_t *menu, const char *path) { - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_FREE, NULL); - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_INIT, - (void*)path); - strlcpy( - menu->db_playlist_file, - path, - sizeof(menu->db_playlist_file)); + menu->db_playlist_file[0] = '\0'; + + if (playlist_get_cached()) + playlist_free_cached(); + + if (playlist_init_cached(path, COLLECTION_SIZE)) + strlcpy( + menu->db_playlist_file, + path, + sizeof(menu->db_playlist_file)); } @@ -2545,12 +2548,15 @@ static int menu_displaylist_parse_horizontal_list( menu_displaylist_set_new_playlist(menu, path_playlist); } - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist); + playlist = playlist_get_cached(); - playlist_qsort(playlist); - - menu_displaylist_parse_playlist(info, - playlist, msg_hash_to_str(MENU_ENUM_LABEL_COLLECTION), is_historylist); + if (playlist) + { + playlist_qsort(playlist); + menu_displaylist_parse_playlist(info, + playlist, + msg_hash_to_str(MENU_ENUM_LABEL_COLLECTION), is_historylist); + } return 0; } @@ -2774,7 +2780,7 @@ static int menu_displaylist_parse_horizontal_content_actions( const char *core_path = NULL; const char *core_name = NULL; const char *db_name = NULL; - playlist_t *playlist = NULL; + playlist_t *playlist = playlist_get_cached(); settings_t *settings = config_get_ptr(); const char *fullpath = path_get(RARCH_PATH_CONTENT); @@ -2783,10 +2789,9 @@ static int menu_displaylist_parse_horizontal_content_actions( idx = menu->rpl_entry_selection_ptr; - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist); - - playlist_get_index(playlist, idx, - &entry_path, &label, &core_path, &core_name, NULL, &db_name); + if (playlist) + playlist_get_index(playlist, idx, + &entry_path, &label, &core_path, &core_name, NULL, &db_name); content_loaded = !rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL) && string_is_equal(menu->deferred_path, fullpath); @@ -2815,14 +2820,16 @@ static int menu_displaylist_parse_horizontal_content_actions( msg_hash_to_str(MENU_ENUM_LABEL_RUN), MENU_ENUM_LABEL_RUN, FILE_TYPE_PLAYLIST_ENTRY, 0, idx); - if (settings->bools.playlist_entry_rename && !settings->bools.kiosk_mode_enable) + if (settings->bools.playlist_entry_rename && + !settings->bools.kiosk_mode_enable) menu_entries_append_enum(info->list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_RENAME_ENTRY), msg_hash_to_str(MENU_ENUM_LABEL_RENAME_ENTRY), MENU_ENUM_LABEL_RENAME_ENTRY, FILE_TYPE_PLAYLIST_ENTRY, 0, idx); - if (settings->bools.playlist_entry_remove && !settings->bools.kiosk_mode_enable) + if (settings->bools.playlist_entry_remove && + !settings->bools.kiosk_mode_enable) menu_entries_append_enum(info->list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DELETE_ENTRY), msg_hash_to_str(MENU_ENUM_LABEL_DELETE_ENTRY), @@ -3983,9 +3990,8 @@ static void menu_displaylist_parse_playlist_generic( menu_displaylist_set_new_playlist(menu, playlist_path); - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist); - - path_playlist = strdup(playlist_name); + playlist = playlist_get_cached(); + path_playlist = strdup(playlist_name); *ret = menu_displaylist_parse_playlist(info, playlist, path_playlist, true); @@ -4414,12 +4420,15 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) msg_hash_to_str(MENU_ENUM_LABEL_COLLECTION), sizeof(path_playlist)); - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_GET, &playlist); + playlist = playlist_get_cached(); - playlist_qsort(playlist); + if (playlist) + { + playlist_qsort(playlist); - ret = menu_displaylist_parse_playlist(info, - playlist, path_playlist, false); + ret = menu_displaylist_parse_playlist(info, + playlist, path_playlist, false); + } if (ret == 0) { diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 403ce0d617..ddbadabe02 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -1877,9 +1877,6 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) case RARCH_MENU_CTL_SET_PENDING_SHUTDOWN: menu_driver_pending_shutdown = true; break; - case RARCH_MENU_CTL_PLAYLIST_FREE: - playlist_free_cached(); - break; case RARCH_MENU_CTL_FIND_DRIVER: { int i; @@ -1920,22 +1917,6 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) } } break; - case RARCH_MENU_CTL_PLAYLIST_INIT: - { - const char *path = (const char*)data; - if (string_is_empty(path)) - return false; - playlist_init_cached(path, COLLECTION_SIZE); - } - break; - case RARCH_MENU_CTL_PLAYLIST_GET: - { - playlist_t **playlist = (playlist_t**)data; - if (!playlist) - return false; - *playlist = playlist_get_cached(); - } - break; case RARCH_MENU_CTL_SET_PREVENT_POPULATE: menu_driver_prevent_populate = true; break; @@ -1967,7 +1948,7 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) if (menu_driver_data_own) return true; - menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_FREE, NULL); + playlist_free_cached(); menu_shader_manager_free(); if (menu_driver_data) diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 94195c73d9..412e920478 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -100,9 +100,6 @@ enum rarch_menu_ctl_state RARCH_MENU_CTL_SET_OWN_DRIVER, RARCH_MENU_CTL_UNSET_OWN_DRIVER, RARCH_MENU_CTL_OWNS_DRIVER, - RARCH_MENU_CTL_PLAYLIST_FREE, - RARCH_MENU_CTL_PLAYLIST_INIT, - RARCH_MENU_CTL_PLAYLIST_GET, RARCH_MENU_CTL_FIND_DRIVER, RARCH_MENU_CTL_LIST_FREE, RARCH_MENU_CTL_LIST_SET_SELECTION,