(Menu) Create menu_list_get_last_stack and menu_list_get_last

This commit is contained in:
twinaphex 2014-10-17 22:53:30 +02:00
parent 43d330fa47
commit 1ece7c8228
11 changed files with 54 additions and 27 deletions

View File

@ -157,7 +157,9 @@ void *file_list_get_actiondata_at_offset(const file_list_t *list, size_t index)
void *file_list_get_last_actiondata(const file_list_t *list)
{
return list->list[list->size - 1].actiondata;
if (list)
return list->list[list->size - 1].actiondata;
return NULL;
}
void file_list_get_at_offset(const file_list_t *list, size_t index,

View File

@ -286,7 +286,7 @@ static int menu_viewport_iterate(unsigned action)
rarch_viewport_t *custom = (rarch_viewport_t*)
&g_extern.console.screen.viewports.custom_vp;
file_list_get_last(driver.menu->menu_stack, NULL, &label, &type);
menu_list_get_last_stack(driver.menu->menu_stack, NULL, &label, &type);
geom = (struct retro_game_geometry*)&g_extern.system.av_info.geometry;
@ -402,7 +402,7 @@ static int menu_viewport_iterate(unsigned action)
break;
}
file_list_get_last(driver.menu->menu_stack, NULL, &label, &type);
menu_list_get_last_stack(driver.menu->menu_stack, NULL, &label, &type);
if (driver.video_data && driver.menu_ctx && driver.menu_ctx->render)
driver.menu_ctx->render();
@ -485,8 +485,8 @@ static int menu_load_or_open_zip_iterate(unsigned action)
case MENU_ACTION_CANCEL:
menu_list_pop_stack(driver.menu->menu_stack);
file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label,
NULL);
menu_list_get_last_stack(driver.menu->menu_stack,
&menu_path, &menu_label, NULL);
if (menu_list_get_size() == 0)
return 0;
@ -547,7 +547,7 @@ static int menu_common_iterate(unsigned action)
file_list_get_actiondata_at_offset(driver.menu->selection_buf,
driver.menu->selection_ptr);
file_list_get_last(driver.menu->menu_stack, NULL, &label, &type);
menu_list_get_last_stack(driver.menu->menu_stack, NULL, &label, &type);
if (driver.video_data && driver.menu_ctx && driver.menu_ctx->set_texture)
driver.menu_ctx->set_texture(driver.menu);

View File

@ -254,7 +254,7 @@ static void glui_frame(void)
glui_render_background(false);
file_list_get_last(driver.menu->menu_stack, &dir, &label, &menu_type);
menu_list_get_last_stack(driver.menu->menu_stack, &dir, &label, &menu_type);
get_title(label, dir, menu_type, title, sizeof(title));

View File

@ -296,7 +296,7 @@ static void rgui_render(void)
const char *dir = NULL;
const char *label = NULL;
unsigned menu_type = 0;
file_list_get_last(driver.menu->menu_stack, &dir, &label, &menu_type);
menu_list_get_last_stack(driver.menu->menu_stack, &dir, &label, &menu_type);
#if 0
RARCH_LOG("Dir is: %s\n", label);

View File

@ -158,7 +158,7 @@ static void rmenu_render(void)
const char *dir = NULL;
const char *label = NULL;
unsigned menu_type = 0;
file_list_get_last(menu->menu_stack, &dir, &label, &menu_type);
menu_list_get_last_stack(menu->menu_stack, &dir, &label, &menu_type);
get_title(label, dir, menu_type, title, sizeof(title));

View File

@ -20,6 +20,7 @@
#include <xuiapp.h>
#include "menu_display.h"
#include "../menu_list.h"
#include "../menu_common.h"
#include "../../../gfx/gfx_common.h"
@ -369,7 +370,7 @@ static void rmenu_xui_render(void)
rmenu_xui_render_background();
file_list_get_last(driver.menu->menu_stack, &dir,
menu_list_get_last_stack(driver.menu->menu_stack, &dir,
&label, &menu_type);
get_title(label, dir, menu_type,

View File

@ -428,7 +428,7 @@ static void xmb_frame(void)
xmb_render_background(false);
file_list_get_last(driver.menu->menu_stack, &dir, &label, &menu_type);
menu_list_get_last_stack(driver.menu->menu_stack, &dir, &label, &menu_type);
get_title(label, dir, menu_type, xmb->title, sizeof(xmb->title));

View File

@ -341,7 +341,7 @@ int menu_entries_parse_list(file_list_t *list, file_list_t *menu_list,
if (!strcmp(label, "core_list"))
{
file_list_get_last(menu_list, &dir, NULL, NULL);
menu_list_get_last_stack(menu_list, &dir, NULL, NULL);
list_size = file_list_get_size(list);
for (i = 0; i < list_size; i++)
@ -381,13 +381,13 @@ int menu_entries_deferred_push(file_list_t *list, file_list_t *menu_list)
const char *label = NULL;
menu_file_list_cbs_t *cbs = NULL;
file_list_get_last(menu_list, &path, &label, &type);
menu_list_get_last_stack(menu_list, &path, &label, &type);
if (!strcmp(label, "Main Menu"))
return entries_push_main_menu_list(driver.menu, list, path, label, type);
cbs = (menu_file_list_cbs_t*)
file_list_get_last_actiondata(menu_list);
menu_list_get_last_stack_actiondata(menu_list);
if (cbs->action_deferred_push)
return cbs->action_deferred_push(list, menu_list, path, label, type);

View File

@ -197,8 +197,9 @@ static int action_ok_shader_pass_load(const char *path,
(void)menu_path;
#ifdef HAVE_SHADER_MANAGER
file_list_get_last(driver.menu->menu_stack, &menu_path, NULL,
menu_list_get_last_stack(driver.menu->menu_stack, &menu_path, NULL,
NULL);
fill_pathname_join(driver.menu->shader->pass[hack_shader_pass].source.path,
menu_path, path,
sizeof(driver.menu->shader->pass[hack_shader_pass].source.path));
@ -223,8 +224,9 @@ static int action_ok_shader_preset_load(const char *path,
(void)shader_path;
(void)menu_path;
#ifdef HAVE_SHADER_MANAGER
file_list_get_last(driver.menu->menu_stack, &menu_path, NULL,
menu_list_get_last_stack(driver.menu->menu_stack, &menu_path, NULL,
NULL);
fill_pathname_join(shader_path, menu_path, path, sizeof(shader_path));
menu_shader_manager_set_preset(driver.menu->shader,
gfx_shader_parse_type(shader_path, RARCH_SHADER_NONE),
@ -257,7 +259,9 @@ static int action_ok_path_use_directory(const char *path,
if (!driver.menu)
return -1;
file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label, NULL);
menu_list_get_last_stack(driver.menu->menu_stack,
&menu_path, &menu_label, NULL);
setting = (rarch_setting_t*)
setting_data_find_setting(driver.menu->list_settings, menu_label);
@ -297,7 +301,8 @@ static int action_ok_core_load(const char *path,
if (!driver.menu)
return -1;
file_list_get_last(driver.menu->menu_stack, &menu_path, NULL, NULL);
menu_list_get_last_stack(driver.menu->menu_stack,
&menu_path, NULL, NULL);
fill_pathname_join(g_settings.libretro, menu_path, path,
sizeof(g_settings.libretro));
@ -333,7 +338,8 @@ static int action_ok_compressed_archive_push(const char *path,
if (!driver.menu)
return -1;
file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label, NULL);
menu_list_get_last_stack(driver.menu->menu_stack,
&menu_path, &menu_label, NULL);
if (!strcmp(menu_label, "detect_core_list"))
{
@ -363,7 +369,8 @@ static int action_ok_directory_push(const char *path,
if (!driver.menu)
return -1;
file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label, NULL);
menu_list_get_last_stack(driver.menu->menu_stack,
&menu_path, &menu_label, NULL);
fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path));
menu_list_push_stack_refresh(
@ -385,7 +392,8 @@ static int action_ok_config_load(const char *path,
if (!driver.menu)
return -1;
file_list_get_last(driver.menu->menu_stack, &menu_path, NULL, NULL);
menu_list_get_last_stack(driver.menu->menu_stack,
&menu_path, NULL, NULL);
fill_pathname_join(config, menu_path, path, sizeof(config));
menu_list_flush_stack(driver.menu->menu_stack, MENU_SETTINGS);
@ -408,7 +416,8 @@ static int action_ok_disk_image_append(const char *path,
if (!driver.menu)
return -1;
file_list_get_last(driver.menu->menu_stack, &menu_path, NULL, NULL);
menu_list_get_last_stack(driver.menu->menu_stack,
&menu_path, NULL, NULL);
fill_pathname_join(image, menu_path, path, sizeof(image));
rarch_disk_control_append_image(image);
@ -428,7 +437,8 @@ static int action_ok_file_load_with_detect_core(const char *path,
if (!driver.menu)
return -1;
file_list_get_last(driver.menu->menu_stack, &menu_path, NULL, NULL);
menu_list_get_last_stack(driver.menu->menu_stack,
&menu_path, NULL, NULL);
ret = rarch_defer_core(g_extern.core_info,
menu_path, path, driver.menu->deferred_path,
@ -460,7 +470,9 @@ static int action_ok_file_load(const char *path,
if (!driver.menu)
return -1;
file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label, NULL);
menu_list_get_last(driver.menu->menu_stack,
&menu_path, &menu_label, NULL);
setting = (rarch_setting_t*)
setting_data_find_setting(driver.menu->list_settings, menu_label);
@ -499,7 +511,8 @@ static int action_ok_set_path(const char *path,
if (!driver.menu)
return -1;
file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label, NULL);
menu_list_get_last_stack(driver.menu->menu_stack,
&menu_path, &menu_label, NULL);
setting = (rarch_setting_t*)
setting_data_find_setting(driver.menu->list_settings, menu_label);
@ -2210,7 +2223,8 @@ static int menu_entries_cbs_init_bind_ok_first(menu_file_list_cbs_t *cbs,
if (!driver.menu)
return -1;
file_list_get_last(driver.menu->menu_stack, NULL, &menu_label, NULL);
menu_list_get_last_stack(driver.menu->menu_stack,
NULL, &menu_label, NULL);
if (type >= MENU_SETTINGS_BIND_BEGIN &&
type <= MENU_SETTINGS_BIND_ALL_LAST)
@ -2439,7 +2453,8 @@ static void menu_entries_cbs_init_bind_deferred_push(menu_file_list_cbs_t *cbs,
if (!cbs || !driver.menu)
return;
file_list_get_last(driver.menu->menu_stack, NULL, &menu_label, NULL);
menu_list_get_last_stack(driver.menu->menu_stack,
NULL, &menu_label, NULL);
cbs->action_deferred_push = deferred_push_default;

View File

@ -69,6 +69,13 @@ void menu_list_get_last_stack(const file_list_t *list,
file_list_get_last(list, path, label, file_type);
}
void *menu_list_get_last_stack_actiondata(const file_list_t *list)
{
if (list)
return file_list_get_last_actiondata(list);
return NULL;
}
void menu_list_flush_stack(file_list_t *list,
unsigned final_type)
{

View File

@ -42,6 +42,8 @@ size_t menu_list_get_stack_size(void);
size_t menu_list_get_size(void);
void *menu_list_get_last_stack_actiondata(const file_list_t *list);
void menu_list_get_last(const file_list_t *list,
const char **path, const char **label,
unsigned *file_type);