mirror of
https://github.com/libretro/RetroArch
synced 2025-04-01 04:20:27 +00:00
Cleanups
This commit is contained in:
parent
59c502d0f4
commit
ba3ee2192a
@ -47,15 +47,6 @@ struct menu_list
|
||||
|
||||
#define menu_entries_need_refresh() ((!menu_entries_nonblocking_refresh) && menu_entries_need_refresh)
|
||||
|
||||
static rarch_setting_t *menu_entries_get_setting(uint32_t i)
|
||||
{
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
return (cbs) ? cbs->setting : NULL;
|
||||
}
|
||||
|
||||
|
||||
/* This file provides an abstraction of the currently displayed
|
||||
* menu.
|
||||
*
|
||||
@ -70,12 +61,19 @@ static rarch_setting_t *menu_entries_get_setting(uint32_t i)
|
||||
|
||||
enum menu_entry_type menu_entry_get_type(uint32_t i)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = NULL;
|
||||
rarch_setting_t *setting = NULL;
|
||||
|
||||
/* XXX Really a special kind of ST_ACTION, but this should be changed */
|
||||
/* FIXME/TODO - XXX Really a special kind of ST_ACTION,
|
||||
* but this should be changed */
|
||||
if (menu_setting_ctl(MENU_SETTING_CTL_IS_OF_PATH_TYPE, (void*)setting))
|
||||
return MENU_ENTRY_PATH;
|
||||
|
||||
cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
setting = cbs ? cbs->setting : NULL;
|
||||
|
||||
if (setting)
|
||||
{
|
||||
switch (setting_get_type(setting))
|
||||
@ -207,8 +205,11 @@ unsigned menu_entry_get_type_new(menu_entry_t *entry)
|
||||
|
||||
uint32_t menu_entry_get_bool_value(uint32_t i)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
bool *ptr = (bool*)setting_get_ptr(setting);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
bool *ptr = setting ? (bool*)setting->value.target.boolean : NULL;
|
||||
if (!ptr)
|
||||
return 0;
|
||||
return *ptr;
|
||||
@ -216,7 +217,10 @@ uint32_t menu_entry_get_bool_value(uint32_t i)
|
||||
|
||||
struct string_list *menu_entry_enum_values(uint32_t i)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
const char *values = setting->values;
|
||||
|
||||
if (!values)
|
||||
@ -226,13 +230,19 @@ struct string_list *menu_entry_enum_values(uint32_t i)
|
||||
|
||||
void menu_entry_enum_set_value_with_string(uint32_t i, const char *s)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
setting_set_with_string_representation(setting, s);
|
||||
}
|
||||
|
||||
int32_t menu_entry_bind_index(uint32_t i)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
|
||||
if (setting)
|
||||
return setting->index - 1;
|
||||
@ -241,34 +251,43 @@ int32_t menu_entry_bind_index(uint32_t i)
|
||||
|
||||
void menu_entry_bind_key_set(uint32_t i, int32_t value)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
struct retro_keybind *keybind = (struct retro_keybind*)
|
||||
setting_get_ptr(setting);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
struct retro_keybind *keybind = setting ? (struct retro_keybind*)setting->value.target.keybind : NULL;
|
||||
if (keybind)
|
||||
keybind->key = (enum retro_key)value;
|
||||
}
|
||||
|
||||
void menu_entry_bind_joykey_set(uint32_t i, int32_t value)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
struct retro_keybind *keybind = (struct retro_keybind*)
|
||||
setting_get_ptr(setting);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
struct retro_keybind *keybind = setting ? (struct retro_keybind*)setting->value.target.keybind : NULL;
|
||||
if (keybind)
|
||||
keybind->joykey = value;
|
||||
}
|
||||
|
||||
void menu_entry_bind_joyaxis_set(uint32_t i, int32_t value)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
struct retro_keybind *keybind = (struct retro_keybind*)
|
||||
setting_get_ptr(setting);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
struct retro_keybind *keybind = setting ? (struct retro_keybind*)setting->value.target.keybind : NULL;
|
||||
if (keybind)
|
||||
keybind->joyaxis = value;
|
||||
}
|
||||
|
||||
void menu_entry_pathdir_selected(uint32_t i)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
|
||||
if (menu_setting_ctl(MENU_SETTING_CTL_IS_OF_PATH_TYPE, (void*)setting))
|
||||
menu_setting_ctl(MENU_SETTING_CTL_ACTION_RIGHT, setting);
|
||||
@ -276,7 +295,10 @@ void menu_entry_pathdir_selected(uint32_t i)
|
||||
|
||||
bool menu_entry_pathdir_allow_empty(uint32_t i)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
uint64_t flags = setting->flags;
|
||||
|
||||
return flags & SD_FLAG_ALLOW_EMPTY;
|
||||
@ -284,7 +306,10 @@ bool menu_entry_pathdir_allow_empty(uint32_t i)
|
||||
|
||||
uint32_t menu_entry_pathdir_for_directory(uint32_t i)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
uint64_t flags = setting->flags;
|
||||
|
||||
return flags & SD_FLAG_PATH_DIR;
|
||||
@ -292,7 +317,10 @@ uint32_t menu_entry_pathdir_for_directory(uint32_t i)
|
||||
|
||||
void menu_entry_pathdir_extensions(uint32_t i, char *s, size_t len)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
const char *values = setting->values;
|
||||
|
||||
if (!values)
|
||||
@ -329,7 +357,10 @@ void menu_entry_get_value(menu_entry_t *entry, char *s, size_t len)
|
||||
|
||||
void menu_entry_set_value(uint32_t i, const char *s)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
setting_set_with_string_representation(setting, s);
|
||||
}
|
||||
|
||||
@ -340,7 +371,10 @@ bool menu_entry_is_password(menu_entry_t *entry)
|
||||
|
||||
uint32_t menu_entry_num_has_range(uint32_t i)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
uint64_t flags = setting->flags;
|
||||
|
||||
return (flags & SD_FLAG_HAS_RANGE);
|
||||
@ -348,14 +382,20 @@ uint32_t menu_entry_num_has_range(uint32_t i)
|
||||
|
||||
float menu_entry_num_min(uint32_t i)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
double min = setting->min;
|
||||
return (float)min;
|
||||
}
|
||||
|
||||
float menu_entry_num_max(uint32_t i)
|
||||
{
|
||||
rarch_setting_t *setting = menu_entries_get_setting(i);
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
menu_file_list_cbs_t *cbs = selection_buf ?
|
||||
(menu_file_list_cbs_t*)selection_buf->list[i].actiondata : NULL;
|
||||
rarch_setting_t *setting = cbs ? cbs->setting : NULL;
|
||||
double max = setting->max;
|
||||
return (float)max;
|
||||
}
|
||||
|
@ -284,6 +284,39 @@ static void menu_input_st_uint_cb(void *userdata, const char *str)
|
||||
menu_input_dialog_end();
|
||||
}
|
||||
|
||||
/* TODO/FIXME - get rid of this eventually */
|
||||
static void *setting_get_ptr(rarch_setting_t *setting)
|
||||
{
|
||||
if (!setting)
|
||||
return NULL;
|
||||
|
||||
switch (setting_get_type(setting))
|
||||
{
|
||||
case ST_BOOL:
|
||||
return setting->value.target.boolean;
|
||||
case ST_INT:
|
||||
return setting->value.target.integer;
|
||||
case ST_UINT:
|
||||
return setting->value.target.unsigned_integer;
|
||||
case ST_SIZE:
|
||||
return setting->value.target.sizet;
|
||||
case ST_FLOAT:
|
||||
return setting->value.target.fraction;
|
||||
case ST_BIND:
|
||||
return setting->value.target.keybind;
|
||||
case ST_STRING:
|
||||
case ST_STRING_OPTIONS:
|
||||
case ST_PATH:
|
||||
case ST_DIR:
|
||||
return setting->value.target.string;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static void menu_input_st_hex_cb(void *userdata, const char *str)
|
||||
{
|
||||
if (str && *str)
|
||||
@ -401,28 +434,24 @@ static void setting_add_special_callbacks(
|
||||
setting_add_special_callbacks(a, b, c); \
|
||||
}
|
||||
|
||||
static bool settings_list_append(rarch_setting_t **list,
|
||||
static bool settings_list_append_internal(
|
||||
rarch_setting_t **list,
|
||||
rarch_setting_info_t *list_info)
|
||||
{
|
||||
if (!list || !*list || !list_info)
|
||||
return false;
|
||||
|
||||
if (list_info->index == list_info->size)
|
||||
{
|
||||
rarch_setting_t *list_settings = NULL;
|
||||
|
||||
list_info->size *= 2;
|
||||
list_settings = (rarch_setting_t*)
|
||||
realloc(*list, sizeof(rarch_setting_t) * list_info->size);
|
||||
unsigned new_size = list_info->size * 2;
|
||||
rarch_setting_t *list_settings = (rarch_setting_t*)
|
||||
realloc(*list, sizeof(rarch_setting_t) * new_size);
|
||||
|
||||
if (!list_settings)
|
||||
return false;
|
||||
list_info->size = new_size;
|
||||
*list = list_settings;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#define settings_list_append(a, b) ((a && *a && b) ? ((((b)->index == (b)->size)) ? settings_list_append_internal(a, b) : true) : false)
|
||||
|
||||
unsigned setting_get_bind_type(rarch_setting_t *setting)
|
||||
{
|
||||
if (!setting)
|
||||
@ -5203,37 +5232,6 @@ int menu_setting_set(unsigned type, unsigned action, bool wraparound)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void *setting_get_ptr(rarch_setting_t *setting)
|
||||
{
|
||||
if (!setting)
|
||||
return NULL;
|
||||
|
||||
switch (setting_get_type(setting))
|
||||
{
|
||||
case ST_BOOL:
|
||||
return setting->value.target.boolean;
|
||||
case ST_INT:
|
||||
return setting->value.target.integer;
|
||||
case ST_UINT:
|
||||
return setting->value.target.unsigned_integer;
|
||||
case ST_SIZE:
|
||||
return setting->value.target.sizet;
|
||||
case ST_FLOAT:
|
||||
return setting->value.target.fraction;
|
||||
case ST_BIND:
|
||||
return setting->value.target.keybind;
|
||||
case ST_STRING:
|
||||
case ST_STRING_OPTIONS:
|
||||
case ST_PATH:
|
||||
case ST_DIR:
|
||||
return setting->value.target.string;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* setting_get_string_representation:
|
||||
* @setting : pointer to setting
|
||||
@ -14701,6 +14699,7 @@ static rarch_setting_t *menu_setting_new_internal(rarch_setting_info_t *list_inf
|
||||
const char *root = msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU);
|
||||
rarch_setting_t *list = (rarch_setting_t*)calloc(
|
||||
list_info->size, sizeof(*list));
|
||||
rarch_setting_t **list_ptr = NULL;
|
||||
|
||||
if (!list)
|
||||
return NULL;
|
||||
@ -14714,7 +14713,9 @@ static rarch_setting_t *menu_setting_new_internal(rarch_setting_info_t *list_inf
|
||||
}
|
||||
}
|
||||
|
||||
if (!settings_list_append(&list, list_info))
|
||||
list_ptr = &list;
|
||||
|
||||
if (!settings_list_append(list_ptr, list_info))
|
||||
{
|
||||
free(list);
|
||||
return NULL;
|
||||
|
@ -127,8 +127,6 @@ int menu_action_handle_setting(rarch_setting_t *setting,
|
||||
enum setting_type menu_setting_get_browser_selection_type(
|
||||
rarch_setting_t *setting);
|
||||
|
||||
void *setting_get_ptr(rarch_setting_t *setting);
|
||||
|
||||
void general_write_handler(rarch_setting_t *setting);
|
||||
|
||||
void general_read_handler(rarch_setting_t *setting);
|
||||
|
@ -105,7 +105,7 @@ static int menu_input_key_bind_set_mode_common(
|
||||
switch (state)
|
||||
{
|
||||
case MENU_INPUT_BINDS_CTL_BIND_SINGLE:
|
||||
keybind = (struct retro_keybind*)setting_get_ptr(setting);
|
||||
keybind = (struct retro_keybind*)setting->value.target.keybind;
|
||||
|
||||
if (!keybind)
|
||||
return -1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user