diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index f75c1a303f..cbdaf7fb09 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -258,11 +258,8 @@ static int menu_settings_iterate(unsigned action) break; case MENU_ACTION_REFRESH: - file_list_get_last(driver.menu->menu_stack, &path, &label, &menu_type); - - if ((menu_parse_check(label, menu_type) == -1)) - menu_entries_push_list(driver.menu, - driver.menu->selection_buf, path, label, menu_type); + menu_parse_and_resolve(driver.menu->selection_buf, + driver.menu->menu_stack); driver.menu->need_refresh = false; break; diff --git a/frontend/menu/menu_entries.c b/frontend/menu/menu_entries.c index 105c43643f..dda18d266b 100644 --- a/frontend/menu/menu_entries.c +++ b/frontend/menu/menu_entries.c @@ -409,7 +409,37 @@ int menu_entries_push_list(menu_handle_t *menu, RARCH_LOG("Menu type is: %d\n", menu_type); #endif - if (!strcmp(label, "Main Menu")) + if (!strcmp(label, "history_list")) + { + RARCH_LOG("Gets here.\n"); + file_list_clear(list); + list_size = content_playlist_size(g_defaults.history); + + for (i = 0; i < list_size; i++) + { + char fill_buf[PATH_MAX]; + const char *path = NULL; + const char *core_name = NULL; + + content_playlist_get_index(g_defaults.history, i, + &path, NULL, &core_name); + strlcpy(fill_buf, core_name, sizeof(fill_buf)); + + if (path) + { + char path_short[PATH_MAX]; + fill_short_pathname_representation(path_short,path,sizeof(path_short)); + snprintf(fill_buf,sizeof(fill_buf),"%s (%s)", + path_short,core_name); + } + + file_list_push(list, fill_buf, "", + MENU_FILE_PLAYLIST_ENTRY, 0); + + do_action = true; + } + } + else if (!strcmp(label, "Main Menu")) { settings_list_free(menu->list_mainmenu); menu->list_mainmenu = (rarch_setting_t *)setting_data_new(SL_FLAG_MAIN_MENU); @@ -479,35 +509,6 @@ int menu_entries_push_list(menu_handle_t *menu, setting->name, setting_set_flags(setting), 0); } } - else if (!strcmp(label, "history_list")) - { - file_list_clear(list); - list_size = content_playlist_size(g_defaults.history); - - for (i = 0; i < list_size; i++) - { - char fill_buf[PATH_MAX]; - const char *path = NULL; - const char *core_name = NULL; - - content_playlist_get_index(g_defaults.history, i, - &path, NULL, &core_name); - strlcpy(fill_buf, core_name, sizeof(fill_buf)); - - if (path) - { - char path_short[PATH_MAX]; - fill_short_pathname_representation(path_short,path,sizeof(path_short)); - snprintf(fill_buf,sizeof(fill_buf),"%s (%s)", - path_short,core_name); - } - - file_list_push(list, fill_buf, "", - MENU_FILE_PLAYLIST_ENTRY, 0); - - do_action = true; - } - } else if (!strcmp(label, "performance_counters")) { file_list_clear(list); @@ -762,19 +763,23 @@ int menu_entries_push_list(menu_handle_t *menu, return 0; } -int menu_parse_check(const char *label, unsigned menu_type) +static int menu_parse_check(const char *label, unsigned menu_type) { #if 0 RARCH_LOG("label is menu_parse_check: %s\n", label); #endif - if (!((menu_type == MENU_FILE_DIRECTORY || + bool check = (!((menu_type == MENU_FILE_DIRECTORY || menu_type == MENU_FILE_CARCHIVE || menu_common_type_is(label, menu_type) == MENU_SETTINGS_SHADER_OPTIONS || menu_common_type_is(label, menu_type) == MENU_FILE_DIRECTORY || menu_type == MENU_FILE_PATH || !strcmp(label, "core_list") || !strcmp(label, "configurations") || - !strcmp(label, "disk_image_append")))) + !strcmp(label, "disk_image_append")))); + if (check) + return -1; + check = !strcmp(label, "history_list") || !strcmp(label, "deferred_core_list"); + if (check) return -1; return 0; } @@ -795,14 +800,9 @@ int menu_parse_and_resolve(file_list_t *list, file_list_t *menu_list) RARCH_LOG("label: %s\n", label); #endif - if ( - !strcmp(label, "history_list") || - !strcmp(label, "deferred_core_list")) + if (((menu_parse_check(label, type)) == -1)) return menu_entries_push_list(driver.menu, list, path, label, type); - if (menu_parse_check(label, type) == -1) - return - 1; - //RARCH_LOG("LABEL: %s\n", label); if (!strcmp(label, "core_list")) exts = EXT_EXECUTABLES; diff --git a/frontend/menu/menu_entries.h b/frontend/menu/menu_entries.h index 673231ba85..8514b1d2d0 100644 --- a/frontend/menu/menu_entries.h +++ b/frontend/menu/menu_entries.h @@ -36,8 +36,6 @@ int menu_entries_push_list(menu_handle_t *menu, void menu_entries_pop_list(file_list_t *list); -int menu_parse_check(const char *label, unsigned menu_type); - int menu_parse_and_resolve(file_list_t *list, file_list_t *menu_list); void menu_entries_pop_stack(file_list_t *list, const char *needle);