Combine menu_flush_stack functions

This commit is contained in:
twinaphex 2015-05-17 19:49:14 +02:00
parent d5de270b8a
commit 16c16eb579
4 changed files with 21 additions and 35 deletions

View File

@ -34,7 +34,7 @@ void menu_entries_common_load_content(bool persist)
event_command(persist ? EVENT_CMD_LOAD_CONTENT_PERSIST : EVENT_CMD_LOAD_CONTENT); event_command(persist ? EVENT_CMD_LOAD_CONTENT_PERSIST : EVENT_CMD_LOAD_CONTENT);
menu_list_flush_stack(menu->menu_list, MENU_SETTINGS); menu_list_flush_stack(menu->menu_list, NULL, MENU_SETTINGS);
menu->msg_force = true; menu->msg_force = true;
} }

View File

@ -60,7 +60,7 @@ static int action_ok_playlist_entry(const char *path,
rarch_playlist_load_content(g_defaults.history, rarch_playlist_load_content(g_defaults.history,
menu->navigation.selection_ptr); menu->navigation.selection_ptr);
menu_list_flush_stack(menu->menu_list, MENU_SETTINGS); menu_list_flush_stack(menu->menu_list, NULL, MENU_SETTINGS);
return -1; return -1;
} }
@ -101,7 +101,7 @@ static int action_ok_shader_pass_load(const char *path,
/* This will reset any changed parameters. */ /* This will reset any changed parameters. */
video_shader_resolve_parameters(NULL, menu->shader); video_shader_resolve_parameters(NULL, menu->shader);
menu_list_flush_stack_by_needle(menu->menu_list, "shader_options"); menu_list_flush_stack(menu->menu_list, "shader_options", 0);
return 0; return 0;
#else #else
return -1; return -1;
@ -424,7 +424,7 @@ static int action_ok_record_configfile_load(const char *path,
fill_pathname_join(global->record.config, menu_path, path, sizeof(global->record.config)); fill_pathname_join(global->record.config, menu_path, path, sizeof(global->record.config));
menu_list_flush_stack_by_needle(menu->menu_list, "Recording Settings"); menu_list_flush_stack(menu->menu_list, "Recording Settings", 0);
return 0; return 0;
} }
@ -446,7 +446,7 @@ static int action_ok_remap_file_load(const char *path,
fill_pathname_join(remap_path, menu_path, path, sizeof(remap_path)); fill_pathname_join(remap_path, menu_path, path, sizeof(remap_path));
input_remapping_load_file(remap_path); input_remapping_load_file(remap_path);
menu_list_flush_stack_by_needle(menu->menu_list, "core_input_remapping_options"); menu_list_flush_stack(menu->menu_list, "core_input_remapping_options", 0);
return 0; return 0;
} }
@ -475,7 +475,7 @@ static int action_ok_video_filter_file_load(const char *path,
event_command(EVENT_CMD_REINIT); event_command(EVENT_CMD_REINIT);
menu_list_flush_stack_by_needle(menu->menu_list, "video_options"); menu_list_flush_stack(menu->menu_list, "video_options", 0);
return 0; return 0;
} }
@ -505,7 +505,7 @@ static int action_ok_cheat_file_load(const char *path,
if (!global->cheat) if (!global->cheat)
return -1; return -1;
menu_list_flush_stack_by_needle(menu->menu_list, "core_cheat_options"); menu_list_flush_stack(menu->menu_list, "core_cheat_options", 0);
return 0; return 0;
} }
@ -564,7 +564,7 @@ static int action_ok_shader_preset_load(const char *path,
menu_shader_manager_set_preset(menu->shader, menu_shader_manager_set_preset(menu->shader,
video_shader_parse_type(shader_path, RARCH_SHADER_NONE), video_shader_parse_type(shader_path, RARCH_SHADER_NONE),
shader_path); shader_path);
menu_list_flush_stack_by_needle(menu->menu_list, "shader_options"); menu_list_flush_stack(menu->menu_list, "shader_options", 0);
return 0; return 0;
#else #else
return -1; return -1;
@ -758,7 +758,7 @@ static int action_ok_core_load(const char *path,
fill_pathname_join(settings->libretro, menu_path, path, fill_pathname_join(settings->libretro, menu_path, path,
sizeof(settings->libretro)); sizeof(settings->libretro));
event_command(EVENT_CMD_LOAD_CORE); event_command(EVENT_CMD_LOAD_CORE);
menu_list_flush_stack(menu->menu_list, MENU_SETTINGS); menu_list_flush_stack(menu->menu_list, NULL, MENU_SETTINGS);
#if defined(HAVE_DYNAMIC) #if defined(HAVE_DYNAMIC)
/* No content needed for this core, load core immediately. */ /* No content needed for this core, load core immediately. */
@ -890,7 +890,7 @@ static int action_ok_config_load(const char *path,
&menu_path, NULL, NULL); &menu_path, NULL, NULL);
fill_pathname_join(config, menu_path, path, sizeof(config)); fill_pathname_join(config, menu_path, path, sizeof(config));
menu_list_flush_stack(menu->menu_list, MENU_SETTINGS); menu_list_flush_stack(menu->menu_list, NULL, MENU_SETTINGS);
menu->msg_force = true; menu->msg_force = true;
if (rarch_replace_config(config)) if (rarch_replace_config(config))
{ {
@ -919,7 +919,7 @@ static int action_ok_disk_image_append(const char *path,
event_command(EVENT_CMD_RESUME); event_command(EVENT_CMD_RESUME);
menu_list_flush_stack(menu->menu_list, MENU_SETTINGS); menu_list_flush_stack(menu->menu_list, NULL, MENU_SETTINGS);
return -1; return -1;
} }

View File

@ -243,28 +243,17 @@ void *menu_list_get_last_stack_actiondata(const menu_list_t *list)
return file_list_get_last_actiondata(list->menu_stack); return file_list_get_last_actiondata(list->menu_stack);
} }
void menu_list_flush_stack(menu_list_t *list, static int menu_list_flush_stack_type(
unsigned final_type) const char *needle, const char *label,
unsigned type, unsigned final_type)
{ {
const char *path = NULL; if (needle)
const char *label = NULL; return strcmp(needle, label);
unsigned type = 0; return type != final_type;
menu_handle_t *menu = menu_driver_get_ptr();
if (!menu || !list)
return;
menu_set_refresh();
file_list_get_last(list->menu_stack, &path, &label, &type);
while (type != final_type)
{
menu_list_pop(list->menu_stack, &menu->navigation.selection_ptr);
file_list_get_last(list->menu_stack, &path, &label, &type);
}
} }
void menu_list_flush_stack_by_needle(menu_list_t *list, void menu_list_flush_stack(menu_list_t *list,
const char *needle) const char *needle, unsigned final_type)
{ {
const char *path = NULL; const char *path = NULL;
const char *label = NULL; const char *label = NULL;
@ -276,7 +265,7 @@ void menu_list_flush_stack_by_needle(menu_list_t *list,
menu_set_refresh(); menu_set_refresh();
file_list_get_last(list->menu_stack, &path, &label, &type); file_list_get_last(list->menu_stack, &path, &label, &type);
while (strcmp(needle, label) != 0) while (menu_list_flush_stack_type(needle, label, type, final_type) != 0)
{ {
menu_list_pop(list->menu_stack, &menu->navigation.selection_ptr); menu_list_pop(list->menu_stack, &menu->navigation.selection_ptr);
file_list_get_last(list->menu_stack, &path, &label, &type); file_list_get_last(list->menu_stack, &path, &label, &type);

View File

@ -64,10 +64,7 @@ void menu_list_free(menu_list_t *menu_list);
menu_list_t *menu_list_new(void); menu_list_t *menu_list_new(void);
void menu_list_flush_stack(menu_list_t *list, void menu_list_flush_stack(menu_list_t *list,
unsigned final_type); const char *needle, unsigned final_type);
void menu_list_flush_stack_by_needle(menu_list_t *list,
const char *needle);
void menu_list_pop(file_list_t *list, size_t *directory_ptr); void menu_list_pop(file_list_t *list, size_t *directory_ptr);