mirror of
https://github.com/libretro/RetroArch
synced 2025-02-28 22:13:51 +00:00
file_list_get - return rarch_settings_t *
This commit is contained in:
parent
eb1de2cf44
commit
266e3e0051
@ -159,19 +159,21 @@ void file_list_sort_on_alt(file_list_t *list)
|
||||
}
|
||||
|
||||
void file_list_get_at_offset(const file_list_t *list, size_t index,
|
||||
const char **path, unsigned *file_type)
|
||||
const char **path, unsigned *file_type, rarch_setting_t *setting)
|
||||
{
|
||||
if (path)
|
||||
*path = list->list[index].path;
|
||||
if (file_type)
|
||||
*file_type = list->list[index].type;
|
||||
if (setting)
|
||||
setting = list->list[index].setting;
|
||||
}
|
||||
|
||||
void file_list_get_last(const file_list_t *list,
|
||||
const char **path, unsigned *file_type)
|
||||
const char **path, unsigned *file_type, rarch_setting_t *setting)
|
||||
{
|
||||
if (list->size)
|
||||
file_list_get_at_offset(list, list->size - 1, path, file_type);
|
||||
file_list_get_at_offset(list, list->size - 1, path, file_type, setting);
|
||||
}
|
||||
|
||||
bool file_list_search(const file_list_t *list, const char *needle, size_t *index)
|
||||
|
@ -22,6 +22,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#include "boolean.h"
|
||||
#include "settings_data.h"
|
||||
|
||||
struct item_file;
|
||||
typedef struct file_list
|
||||
@ -40,13 +41,13 @@ void file_list_pop(file_list_t *list, size_t *directory_ptr);
|
||||
void file_list_clear(file_list_t *list);
|
||||
|
||||
void file_list_get_last(const file_list_t *list,
|
||||
const char **path, unsigned *type);
|
||||
const char **path, unsigned *type, rarch_setting_t *setting);
|
||||
|
||||
size_t file_list_get_size(const file_list_t *list);
|
||||
size_t file_list_get_directory_ptr(const file_list_t *list);
|
||||
|
||||
void file_list_get_at_offset(const file_list_t *list, size_t index,
|
||||
const char **path, unsigned *type);
|
||||
const char **path, unsigned *type, rarch_setting_t *setting);
|
||||
|
||||
void file_list_set_alt_at_offset(file_list_t *list, size_t index,
|
||||
const char *alt);
|
||||
|
@ -1399,6 +1399,7 @@ static int menu_settings_iterate(unsigned action)
|
||||
const char *dir = NULL;
|
||||
unsigned type = 0;
|
||||
unsigned menu_type = 0;
|
||||
rarch_setting_t *setting = NULL;
|
||||
|
||||
if (!driver.menu)
|
||||
return 0;
|
||||
@ -1406,7 +1407,7 @@ static int menu_settings_iterate(unsigned action)
|
||||
driver.menu->frame_buf_pitch = driver.menu->width * 2;
|
||||
|
||||
if (action != MENU_ACTION_REFRESH)
|
||||
file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &label, &type);
|
||||
file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &label, &type, setting);
|
||||
|
||||
if (type == MENU_SETTINGS_CORE)
|
||||
label = g_settings.libretro_directory;
|
||||
@ -1415,7 +1416,7 @@ static int menu_settings_iterate(unsigned action)
|
||||
else if (type == MENU_SETTINGS_DISK_APPEND)
|
||||
label = g_settings.menu_content_directory;
|
||||
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type);
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type, setting);
|
||||
|
||||
if (driver.menu->need_refresh)
|
||||
action = MENU_ACTION_NOOP;
|
||||
@ -1446,7 +1447,7 @@ static int menu_settings_iterate(unsigned action)
|
||||
case MENU_ACTION_SELECT:
|
||||
{
|
||||
const char *path = NULL;
|
||||
file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &path, &driver.menu->info_selection);
|
||||
file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &path, &driver.menu->info_selection, setting);
|
||||
file_list_push(driver.menu->menu_stack, "", "", MENU_INFO_SCREEN, driver.menu->selection_ptr);
|
||||
}
|
||||
break;
|
||||
@ -1508,7 +1509,7 @@ static int menu_settings_iterate(unsigned action)
|
||||
break;
|
||||
}
|
||||
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type);
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type, setting);
|
||||
|
||||
if (driver.menu->need_refresh && !(menu_type == MENU_FILE_DIRECTORY ||
|
||||
menu_common_type_is(menu_type) == MENU_SETTINGS_SHADER_OPTIONS ||
|
||||
@ -1567,16 +1568,17 @@ static int menu_settings_iterate(unsigned action)
|
||||
static int menu_viewport_iterate(unsigned action)
|
||||
{
|
||||
int stride_x, stride_y;
|
||||
struct retro_game_geometry *geom;
|
||||
const char *base_msg = NULL;
|
||||
char msg[64];
|
||||
struct retro_game_geometry *geom;
|
||||
rarch_setting_t *setting = NULL;
|
||||
const char *base_msg = NULL;
|
||||
unsigned menu_type = 0;
|
||||
rarch_viewport_t *custom = (rarch_viewport_t*)&g_extern.console.screen.viewports.custom_vp;
|
||||
|
||||
if (!driver.menu)
|
||||
return 0;
|
||||
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &menu_type);
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &menu_type, setting);
|
||||
|
||||
geom = (struct retro_game_geometry*)&g_extern.system.av_info.geometry;
|
||||
stride_x = g_settings.video.scale_integer ?
|
||||
@ -1695,7 +1697,7 @@ static int menu_viewport_iterate(unsigned action)
|
||||
break;
|
||||
}
|
||||
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &menu_type);
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &menu_type, setting);
|
||||
|
||||
if (driver.video_data && driver.menu_ctx && driver.menu_ctx->render)
|
||||
driver.menu_ctx->render();
|
||||
@ -1745,7 +1747,8 @@ static int menu_viewport_iterate(unsigned action)
|
||||
static void menu_parse_and_resolve(unsigned menu_type)
|
||||
{
|
||||
size_t i, list_size;
|
||||
file_list_t *list;
|
||||
file_list_t *list = NULL;
|
||||
rarch_setting_t *setting = NULL;
|
||||
const core_info_t *info = NULL;
|
||||
const char *dir = NULL;
|
||||
|
||||
@ -1791,7 +1794,7 @@ static void menu_parse_and_resolve(unsigned menu_type)
|
||||
default:
|
||||
{
|
||||
/* Directory parse */
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type);
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type, setting);
|
||||
|
||||
if (!*dir)
|
||||
{
|
||||
@ -1933,7 +1936,7 @@ static void menu_parse_and_resolve(unsigned menu_type)
|
||||
case MENU_SETTINGS_CORE:
|
||||
dir = NULL;
|
||||
list = (file_list_t*)driver.menu->selection_buf;
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type);
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type, setting);
|
||||
list_size = file_list_get_size(list);
|
||||
for (i = 0; i < list_size; i++)
|
||||
{
|
||||
@ -1941,7 +1944,7 @@ static void menu_parse_and_resolve(unsigned menu_type)
|
||||
const char *path = NULL;
|
||||
unsigned type = 0;
|
||||
|
||||
file_list_get_at_offset(list, i, &path, &type);
|
||||
file_list_get_at_offset(list, i, &path, &type, setting);
|
||||
if (type != MENU_FILE_PLAIN)
|
||||
continue;
|
||||
|
||||
@ -2225,6 +2228,7 @@ static void menu_common_setting_set_current_string_dir(rarch_setting_t *setting,
|
||||
static int menu_common_iterate(unsigned action)
|
||||
{
|
||||
rarch_setting_t *setting_data, *current_setting;
|
||||
rarch_setting_t *setting = NULL;
|
||||
int ret = 0;
|
||||
unsigned menu_type = 0;
|
||||
const char *dir = NULL;
|
||||
@ -2237,7 +2241,7 @@ static int menu_common_iterate(unsigned action)
|
||||
|
||||
setting_data = (rarch_setting_t *)setting_data_get_list();
|
||||
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type);
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type, setting);
|
||||
|
||||
if (driver.video_data && driver.menu_ctx && driver.menu_ctx->set_texture)
|
||||
driver.menu_ctx->set_texture(driver.menu);
|
||||
@ -2330,7 +2334,7 @@ static int menu_common_iterate(unsigned action)
|
||||
if (file_list_get_size(driver.menu->selection_buf) == 0)
|
||||
return 0;
|
||||
|
||||
file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &path, &type);
|
||||
file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &path, &type, setting);
|
||||
|
||||
if (
|
||||
menu_common_type_is(type) == MENU_SETTINGS_SHADER_OPTIONS ||
|
||||
@ -2627,9 +2631,8 @@ static int menu_common_iterate(unsigned action)
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// refresh values in case the stack changed
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type);
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type, setting);
|
||||
|
||||
if (driver.menu->need_refresh && (menu_type == MENU_FILE_DIRECTORY ||
|
||||
menu_common_type_is(menu_type) == MENU_SETTINGS_SHADER_OPTIONS ||
|
||||
|
@ -264,6 +264,7 @@ static void rgui_render_messagebox(const char *message)
|
||||
static void rgui_render(void)
|
||||
{
|
||||
size_t begin, end;
|
||||
rarch_setting_t *setting = NULL;
|
||||
|
||||
if (driver.menu->need_refresh &&
|
||||
(g_extern.lifecycle_state & (1ULL << MODE_MENU))
|
||||
@ -287,7 +288,7 @@ static void rgui_render(void)
|
||||
const char *dir = NULL;
|
||||
unsigned menu_type = 0;
|
||||
unsigned menu_type_is = 0;
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type);
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type, setting);
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->backend && driver.menu_ctx->backend->type_is)
|
||||
menu_type_is = driver.menu_ctx->backend->type_is(menu_type);
|
||||
@ -444,11 +445,11 @@ static void rgui_render(void)
|
||||
|
||||
for (i = begin; i < end; i++, y += FONT_HEIGHT_STRIDE)
|
||||
{
|
||||
char message[256], type_str[256];
|
||||
const char *path = 0;
|
||||
unsigned type = 0;
|
||||
file_list_get_at_offset(driver.menu->selection_buf, i, &path, &type);
|
||||
char message[256];
|
||||
char type_str[256];
|
||||
rarch_setting_t *setting = NULL;
|
||||
file_list_get_at_offset(driver.menu->selection_buf, i, &path, &type, setting);
|
||||
|
||||
unsigned w = 19;
|
||||
if (menu_type == MENU_SETTINGS_PERFORMANCE_COUNTERS)
|
||||
|
@ -151,7 +151,8 @@ static void rmenu_render(void)
|
||||
const char *dir = NULL;
|
||||
unsigned menu_type = 0;
|
||||
unsigned menu_type_is = 0;
|
||||
file_list_get_last(menu->menu_stack, &dir, &menu_type);
|
||||
rarch_setting_t *setting = NULL;
|
||||
file_list_get_last(menu->menu_stack, &dir, &menu_type, setting);
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->backend && driver.menu_ctx->backend->type_is)
|
||||
menu_type_is = driver.menu_ctx->backend->type_is(menu_type);
|
||||
@ -321,7 +322,8 @@ static void rmenu_render(void)
|
||||
{
|
||||
const char *path = 0;
|
||||
unsigned type = 0;
|
||||
file_list_get_at_offset(menu->selection_buf, i, &path, &type);
|
||||
rarch_setting_t *setting = NULL;
|
||||
file_list_get_at_offset(menu->selection_buf, i, &path, &type, setting);
|
||||
char message[256];
|
||||
char type_str[256];
|
||||
|
||||
@ -364,7 +366,7 @@ static void rmenu_render(void)
|
||||
if (type == MENU_FILE_PLAIN)
|
||||
{
|
||||
strlcpy(type_str, "(CORE)", sizeof(type_str));
|
||||
file_list_get_alt_at_offset(menu->selection_buf, i, &path);
|
||||
file_list_get_alt_at_offset(menu->selection_buf, i, &path, setting);
|
||||
w = 6;
|
||||
}
|
||||
else
|
||||
|
@ -379,6 +379,7 @@ static void rmenu_xui_render(void)
|
||||
const char *dir = NULL;
|
||||
unsigned menu_type = 0;
|
||||
unsigned menu_type_is = 0;
|
||||
rarch_setting_t *setting = NULL;
|
||||
|
||||
if (!driver.menu || driver.menu->need_refresh &&
|
||||
(g_extern.lifecycle_state & (1ULL << MODE_MENU))
|
||||
@ -390,7 +391,7 @@ static void rmenu_xui_render(void)
|
||||
|
||||
rmenu_xui_render_background();
|
||||
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type);
|
||||
file_list_get_last(driver.menu->menu_stack, &dir, &menu_type, setting);
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->backend && driver.menu_ctx->backend->type_is)
|
||||
menu_type_is = driver.menu_ctx->backend->type_is(menu_type);
|
||||
@ -547,7 +548,7 @@ static void rmenu_xui_render(void)
|
||||
{
|
||||
const char *path = 0;
|
||||
unsigned type = 0;
|
||||
file_list_get_at_offset(driver.menu->selection_buf, i, &path, &type);
|
||||
file_list_get_at_offset(driver.menu->selection_buf, i, &path, &type, setting);
|
||||
char message[256];
|
||||
char type_str[256];
|
||||
|
||||
|
@ -349,16 +349,17 @@ void menu_ticker_line(char *buf, size_t len, unsigned index, const char *str, bo
|
||||
void menu_flush_stack_type(unsigned final_type)
|
||||
{
|
||||
unsigned type = 0;
|
||||
rarch_setting_t *setting = NULL;
|
||||
|
||||
if (!driver.menu)
|
||||
return;
|
||||
|
||||
driver.menu->need_refresh = true;
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &type);
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &type, setting);
|
||||
while (type != final_type)
|
||||
{
|
||||
file_list_pop(driver.menu->menu_stack, &driver.menu->selection_ptr);
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &type);
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &type, setting);
|
||||
}
|
||||
}
|
||||
|
||||
@ -370,6 +371,7 @@ bool menu_iterate(void)
|
||||
uint64_t input_state = 0;
|
||||
int32_t input_entry_ret = 0;
|
||||
int32_t ret = 0;
|
||||
rarch_setting_t *setting = NULL;
|
||||
|
||||
if (!driver.menu)
|
||||
return false;
|
||||
@ -477,12 +479,12 @@ bool menu_iterate(void)
|
||||
if (ret < 0)
|
||||
{
|
||||
unsigned type = 0;
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &type);
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &type, setting);
|
||||
|
||||
while (type != MENU_SETTINGS)
|
||||
{
|
||||
file_list_pop(driver.menu->menu_stack, &driver.menu->selection_ptr);
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &type);
|
||||
file_list_get_last(driver.menu->menu_stack, NULL, &type, setting);
|
||||
}
|
||||
}
|
||||
|
||||
@ -607,9 +609,10 @@ static inline int menu_list_get_first_char(file_list_t *buf, unsigned offset)
|
||||
|
||||
static inline bool menu_list_elem_is_dir(file_list_t *buf, unsigned offset)
|
||||
{
|
||||
rarch_setting_t *setting = NULL;
|
||||
const char *path = NULL;
|
||||
unsigned type = 0;
|
||||
file_list_get_at_offset(buf, offset, &path, &type);
|
||||
file_list_get_at_offset(buf, offset, &path, &type, setting);
|
||||
return type != MENU_FILE_PLAIN;
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,8 @@
|
||||
#ifndef __RARCH_SETTINGS_DATA_H__
|
||||
#define __RARCH_SETTINGS_DATA_H__
|
||||
|
||||
#include "general.h"
|
||||
#include <stdint.h>
|
||||
#include "conf/config_file.h"
|
||||
|
||||
#define SETTINGS_DATA_LIST_SIZE 512
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user