From 0a9eb98cc8cafd6d51cc489834c5d49145de8a39 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 26 Sep 2018 15:46:27 +0200 Subject: [PATCH] Cleanups --- managers/cheat_manager.c | 88 +++--- managers/cheat_manager.h | 41 ++- menu/cbs/menu_cbs_left.c | 248 ---------------- menu/cbs/menu_cbs_ok.c | 114 -------- menu/menu_cbs.h | 32 --- menu/menu_setting.c | 597 ++++++++++++++++++++++++++++++--------- menu/menu_setting.h | 2 +- setting_list.c | 128 +++------ setting_list.h | 40 +-- 9 files changed, 593 insertions(+), 697 deletions(-) diff --git a/managers/cheat_manager.c b/managers/cheat_manager.c index 5bf273b116..069776d5bd 100644 --- a/managers/cheat_manager.c +++ b/managers/cheat_manager.c @@ -659,51 +659,51 @@ bool cheat_manager_alloc_if_empty(void) return true; } -int cheat_manager_initialize_memory(void *data, bool wraparound) +int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound) { - retro_ctx_memory_info_t meminfo ; - bool refresh = false; - bool is_search_initialization = (data != NULL) ; + retro_ctx_memory_info_t meminfo; + bool refresh = false; + bool is_search_initialization = (setting != NULL); - meminfo.id = RETRO_MEMORY_SYSTEM_RAM ; - if (! core_get_memory(&meminfo) ) + meminfo.id = RETRO_MEMORY_SYSTEM_RAM; + if (!core_get_memory(&meminfo)) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_INIT_FAIL), 1, 180, true); - return 0 ; + return 0; } - cheat_manager_state.actual_memory_size = (unsigned)meminfo.size ; - cheat_manager_state.curr_memory_buf = meminfo.data ; - cheat_manager_state.total_memory_size = (unsigned)meminfo.size ; - cheat_manager_state.num_matches = (cheat_manager_state.total_memory_size*8)/((int)pow(2,cheat_manager_state.search_bit_size)) ; + cheat_manager_state.actual_memory_size = (unsigned)meminfo.size; + cheat_manager_state.curr_memory_buf = meminfo.data; + cheat_manager_state.total_memory_size = (unsigned)meminfo.size; + cheat_manager_state.num_matches = (cheat_manager_state.total_memory_size*8)/((int)pow(2,cheat_manager_state.search_bit_size)); /* Ensure we're aligned on 4-byte boundary */ #if 0 if (meminfo.size % 4 > 0) - cheat_manager_state.total_memory_size = cheat_manager_state.total_memory_size + (4 - (meminfo.size%4)) ; + cheat_manager_state.total_memory_size = cheat_manager_state.total_memory_size + (4 - (meminfo.size%4)); #endif - if ( is_search_initialization ) + if (is_search_initialization) { cheat_manager_state.prev_memory_buf = (uint8_t*) calloc(cheat_manager_state.total_memory_size, sizeof(uint8_t)); - if (!cheat_manager_state.prev_memory_buf ) + if (!cheat_manager_state.prev_memory_buf) { runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_INIT_FAIL), 1, 180, true); - return 0 ; + return 0; } cheat_manager_state.matches = (uint8_t*) calloc(cheat_manager_state.total_memory_size, sizeof(uint8_t)); - if (!cheat_manager_state.matches ) + if (!cheat_manager_state.matches) { - free(cheat_manager_state.prev_memory_buf) ; - cheat_manager_state.prev_memory_buf = NULL ; + free(cheat_manager_state.prev_memory_buf); + cheat_manager_state.prev_memory_buf = NULL; runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_INIT_FAIL), 1, 180, true); - return 0 ; + return 0; } - memset(cheat_manager_state.matches, 0xFF, cheat_manager_state.total_memory_size) ; + memset(cheat_manager_state.matches, 0xFF, cheat_manager_state.total_memory_size); memcpy(cheat_manager_state.prev_memory_buf, cheat_manager_state.curr_memory_buf, cheat_manager_state.actual_memory_size); - cheat_manager_state.memory_search_initialized = true ; + cheat_manager_state.memory_search_initialized = true; } - cheat_manager_state.memory_initialized = true ; + cheat_manager_state.memory_initialized = true; runloop_msg_queue_push(msg_hash_to_str(MSG_CHEAT_INIT_SUCCESS), 1, 180, true); @@ -716,7 +716,7 @@ int cheat_manager_initialize_memory(void *data, bool wraparound) } #endif - return 0 ; + return 0; } static void cheat_manager_setup_search_meta(unsigned int bitsize, unsigned int *bytes_per_item, unsigned int *mask, unsigned int *bits) @@ -768,39 +768,39 @@ static void cheat_manager_setup_search_meta(unsigned int bitsize, unsigned int * } } -int cheat_manager_search_exact(void *data, bool wraparound) +int cheat_manager_search_exact(rarch_setting_t *setting, bool wraparound) { return cheat_manager_search(CHEAT_SEARCH_TYPE_EXACT) ; } -int cheat_manager_search_lt(void *data, bool wraparound) +int cheat_manager_search_lt(rarch_setting_t *setting, bool wraparound) { return cheat_manager_search(CHEAT_SEARCH_TYPE_LT) ; } -int cheat_manager_search_gt(void *data, bool wraparound) +int cheat_manager_search_gt(rarch_setting_t *setting, bool wraparound) { return cheat_manager_search(CHEAT_SEARCH_TYPE_GT) ; } -int cheat_manager_search_lte(void *data, bool wraparound) +int cheat_manager_search_lte(rarch_setting_t *setting, bool wraparound) { return cheat_manager_search(CHEAT_SEARCH_TYPE_LTE) ; } -int cheat_manager_search_gte(void *data, bool wraparound) +int cheat_manager_search_gte(rarch_setting_t *setting, bool wraparound) { return cheat_manager_search(CHEAT_SEARCH_TYPE_GTE) ; } -int cheat_manager_search_eq(void *data, bool wraparound) +int cheat_manager_search_eq(rarch_setting_t *setting, bool wraparound) { return cheat_manager_search(CHEAT_SEARCH_TYPE_EQ) ; } -int cheat_manager_search_neq(void *data, bool wraparound) +int cheat_manager_search_neq(rarch_setting_t *setting, bool wraparound) { return cheat_manager_search(CHEAT_SEARCH_TYPE_NEQ) ; } -int cheat_manager_search_eqplus(void *data, bool wraparound) +int cheat_manager_search_eqplus(rarch_setting_t *setting, bool wraparound) { return cheat_manager_search(CHEAT_SEARCH_TYPE_EQPLUS) ; } -int cheat_manager_search_eqminus(void *data, bool wraparound) +int cheat_manager_search_eqminus(rarch_setting_t *setting, bool wraparound) { return cheat_manager_search(CHEAT_SEARCH_TYPE_EQMINUS) ; } @@ -808,15 +808,15 @@ int cheat_manager_search_eqminus(void *data, bool wraparound) int cheat_manager_search(enum cheat_search_type search_type) { char msg[100]; - unsigned char *curr = cheat_manager_state.curr_memory_buf ; - unsigned char *prev = cheat_manager_state.prev_memory_buf ; - unsigned int idx = 0 ; - unsigned int curr_val ; - unsigned int prev_val ; - unsigned int mask = 0 ; - unsigned int bytes_per_item = 1 ; - unsigned int bits = 8 ; - bool refresh = false; + unsigned char *curr = cheat_manager_state.curr_memory_buf; + unsigned char *prev = cheat_manager_state.prev_memory_buf; + unsigned int idx = 0; + unsigned int curr_val = 0; + unsigned int prev_val = 0; + unsigned int mask = 0; + unsigned int bytes_per_item = 1; + unsigned int bits = 8; + bool refresh = false; if (!cheat_manager_state.curr_memory_buf) { @@ -832,7 +832,7 @@ int cheat_manager_search(enum cheat_search_type search_type) { unsigned byte_part; - switch (bytes_per_item ) + switch (bytes_per_item) { case 2 : { @@ -1438,14 +1438,14 @@ void cheat_manager_match_action(enum cheat_match_action_type match_action, unsig } } } -int cheat_manager_copy_match(void *data, bool wraparound) +int cheat_manager_copy_match(rarch_setting_t *setting, bool wraparound) { cheat_manager_match_action(CHEAT_MATCH_ACTION_TYPE_COPY, cheat_manager_state.match_idx, NULL, NULL, NULL, NULL) ; return 0 ; } -int cheat_manager_delete_match(void *data, bool wraparound) +int cheat_manager_delete_match(rarch_setting_t *setting, bool wraparound) { bool refresh = false; cheat_manager_match_action(CHEAT_MATCH_ACTION_TYPE_DELETE, diff --git a/managers/cheat_manager.h b/managers/cheat_manager.h index 3665ea62fd..a3bf6618bc 100644 --- a/managers/cheat_manager.h +++ b/managers/cheat_manager.h @@ -20,6 +20,8 @@ #include #include +#include "setting_list.h" + RETRO_BEGIN_DECLS @@ -217,24 +219,39 @@ void cheat_manager_load_game_specific_cheats(void); void cheat_manager_save_game_specific_cheats(void); -int cheat_manager_initialize_memory(void *data, bool wraparound); -int cheat_manager_search_exact(void *data, bool wraparound); -int cheat_manager_search_lt(void *data, bool wraparound); -int cheat_manager_search_gt(void *data, bool wraparound); -int cheat_manager_search_lte(void *data, bool wraparound); -int cheat_manager_search_gte(void *data, bool wraparound); -int cheat_manager_search_eq(void *data, bool wraparound); -int cheat_manager_search_neq(void *data, bool wraparound); -int cheat_manager_search_eqplus(void *data, bool wraparound); -int cheat_manager_search_eqminus(void *data, bool wraparound); +int cheat_manager_initialize_memory(rarch_setting_t *setting, bool wraparound); + +int cheat_manager_search_exact(rarch_setting_t *setting, bool wraparound); + +int cheat_manager_search_lt(rarch_setting_t *setting, bool wraparound); + +int cheat_manager_search_gt(rarch_setting_t *setting, bool wraparound); + +int cheat_manager_search_lte(rarch_setting_t *setting, bool wraparound); + +int cheat_manager_search_gte(rarch_setting_t *setting, bool wraparound); + +int cheat_manager_search_eq(rarch_setting_t *setting, bool wraparound); + +int cheat_manager_search_neq(rarch_setting_t *setting, bool wraparound); + +int cheat_manager_search_eqplus(rarch_setting_t *setting, bool wraparound); + +int cheat_manager_search_eqminus(rarch_setting_t *setting, bool wraparound); + int cheat_manager_add_matches(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx); + void cheat_manager_apply_retro_cheats(void); + int cheat_manager_search(enum cheat_search_type search_type); + void cheat_manager_match_action(enum cheat_match_action_type match_action, unsigned int target_match_idx, unsigned int *address, unsigned int *address_mask, unsigned int *prev_value, unsigned int *curr_value); -int cheat_manager_copy_match(void *data, bool wraparound); -int cheat_manager_delete_match(void *data, bool wraparound); + +int cheat_manager_copy_match(rarch_setting_t *setting, bool wraparound); + +int cheat_manager_delete_match(rarch_setting_t *setting, bool wraparound); RETRO_END_DECLS #endif diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index e8ac23bff3..fe390d3f4a 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -51,254 +51,6 @@ extern struct key_desc key_descriptors[RARCH_MAX_KEYS]; -int setting_action_left_analog_dpad_mode(void *data, bool wraparound) -{ - unsigned port = 0; - rarch_setting_t *setting = (rarch_setting_t*)data; - settings_t *settings = config_get_ptr(); - - if (!setting) - return -1; - - port = setting->index_offset; - - configuration_set_uint(settings, settings->uints.input_analog_dpad_mode[port], - (settings->uints.input_analog_dpad_mode - [port] + ANALOG_DPAD_LAST - 1) % ANALOG_DPAD_LAST); - - return 0; -} - -int setting_action_left_libretro_device_type( - void *data, bool wraparound) -{ - retro_ctx_controller_info_t pad; - unsigned current_device, current_idx, i, devices[128], - types = 0, port = 0; - const struct retro_controller_info *desc = NULL; - rarch_setting_t *setting = (rarch_setting_t*)data; - rarch_system_info_t *system = NULL; - - if (!setting) - return -1; - - port = setting->index_offset; - - devices[types++] = RETRO_DEVICE_NONE; - devices[types++] = RETRO_DEVICE_JOYPAD; - - system = runloop_get_system_info(); - - if (system) - { - /* Only push RETRO_DEVICE_ANALOG as default if we use an - * older core which doesn't use SET_CONTROLLER_INFO. */ - if (!system->ports.size) - devices[types++] = RETRO_DEVICE_ANALOG; - - if (port < system->ports.size) - desc = &system->ports.data[port]; - } - - if (desc) - { - for (i = 0; i < desc->num_types; i++) - { - unsigned id = desc->types[i].id; - if (types < ARRAY_SIZE(devices) && - id != RETRO_DEVICE_NONE && - id != RETRO_DEVICE_JOYPAD) - devices[types++] = id; - } - } - - current_device = input_config_get_device(port); - current_idx = 0; - for (i = 0; i < types; i++) - { - if (current_device != devices[i]) - continue; - - current_idx = i; - break; - } - - current_device = devices - [(current_idx + types - 1) % types]; - - input_config_set_device(port, current_device); - - pad.port = port; - pad.device = current_device; - - core_set_controller_port_device(&pad); - - return 0; -} - -int setting_action_left_bind_device(void *data, bool wraparound) -{ - unsigned *p = NULL; - unsigned index_offset = 0; - unsigned max_devices = input_config_get_device_count(); - rarch_setting_t *setting = (rarch_setting_t*)data; - settings_t *settings = config_get_ptr(); - - if (!setting || max_devices == 0) - return -1; - - index_offset = setting->index_offset; - - p = &settings->uints.input_joypad_map[index_offset]; - - if ((*p) >= max_devices) - *p = max_devices - 1; - else if ((*p) > 0) - (*p)--; - - return 0; -} - -int setting_action_left_mouse_index(void *data, bool wraparound) -{ - rarch_setting_t *setting = (rarch_setting_t*)data; - settings_t *settings = config_get_ptr(); - - if (!setting) - return -1; - - if (settings->uints.input_mouse_index[setting->index_offset]) - { - --settings->uints.input_mouse_index[setting->index_offset]; - settings->modified = true; - } - - return 0; -} - -int setting_uint_action_left_custom_viewport_width( - void *data, bool wraparound) -{ - video_viewport_t vp; - struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); - video_viewport_t *custom = video_viewport_get_custom(); - settings_t *settings = config_get_ptr(); - struct retro_game_geometry *geom = (struct retro_game_geometry*) - &av_info->geometry; - - if (!settings || !av_info) - return -1; - - video_driver_get_viewport_info(&vp); - - if (custom->width <= 1) - custom->width = 1; - else if (settings->bools.video_scale_integer) - { - if (custom->width > geom->base_width) - custom->width -= geom->base_width; - } - else - custom->width -= 1; - - aspectratio_lut[ASPECT_RATIO_CUSTOM].value = - (float)custom->width / custom->height; - - return 0; -} - -int setting_uint_action_left_custom_viewport_height( - void *data, bool wraparound) -{ - video_viewport_t vp; - struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); - video_viewport_t *custom = video_viewport_get_custom(); - settings_t *settings = config_get_ptr(); - struct retro_game_geometry *geom = (struct retro_game_geometry*) - &av_info->geometry; - - if (!settings || !av_info) - return -1; - - video_driver_get_viewport_info(&vp); - - if (custom->height <= 1) - custom->height = 1; - else if (settings->bools.video_scale_integer) - { - if (custom->height > geom->base_height) - custom->height -= geom->base_height; - } - else - custom->height -= 1; - - aspectratio_lut[ASPECT_RATIO_CUSTOM].value = - (float)custom->width / custom->height; - - return 0; -} - -int setting_string_action_left_audio_device( - void *data, bool wraparound) -{ -#if !defined(RARCH_CONSOLE) - int audio_device_index; - struct string_list *ptr = NULL; - rarch_setting_t *setting = (rarch_setting_t*)data; - - if (!audio_driver_get_devices_list((void**)&ptr)) - return -1; - - if (!ptr) - return -1; - - /* Get index in the string list */ - audio_device_index = string_list_find_elem( - ptr, setting->value.target.string) - 1; - audio_device_index--; - - /* Reset index if needed */ - if (audio_device_index < 0) - audio_device_index = (int)(ptr->size - 1); - - strlcpy(setting->value.target.string, ptr->elems[audio_device_index].data, setting->size); -#endif - - return 0; -} - -int setting_string_action_left_driver(void *data, - bool wraparound) -{ - driver_ctx_info_t drv; - rarch_setting_t *setting = (rarch_setting_t*)data; - - if (!setting) - return -1; - - drv.label = setting->name; - drv.s = setting->value.target.string; - drv.len = setting->size; - - if (!driver_ctl(RARCH_DRIVER_CTL_FIND_PREV, &drv)) - { - settings_t *settings = config_get_ptr(); - - if (settings && settings->bools.menu_navigation_wraparound_enable) - { - drv.label = setting->name; - drv.s = setting->value.target.string; - drv.len = setting->size; - driver_ctl(RARCH_DRIVER_CTL_FIND_LAST, &drv); - } - } - - if (setting->change_handler) - setting->change_handler(setting); - - return 0; -} - static int generic_shader_action_parameter_left( struct video_shader_parameter *param, unsigned type, const char *label, bool wraparound) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index deb062b659..50793aecfe 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -141,120 +141,6 @@ static char *lakka_get_project(void) info.enum_idx = a; \ dl_type = b; -int setting_action_ok_video_refresh_rate_auto(void *data, bool wraparound) -{ - double video_refresh_rate = 0.0; - double deviation = 0.0; - unsigned sample_points = 0; - rarch_setting_t *setting = (rarch_setting_t*)data; - - if (!setting) - return -1; - - if (video_monitor_fps_statistics(&video_refresh_rate, - &deviation, &sample_points)) - { - float video_refresh_rate_float = (float)video_refresh_rate; - driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &video_refresh_rate_float); - /* Incase refresh rate update forced non-block video. */ - command_event(CMD_EVENT_VIDEO_SET_BLOCKING_STATE, NULL); - } - - if (setting_generic_action_ok_default(setting, wraparound) != 0) - return -1; - - return 0; -} - -int setting_action_ok_video_refresh_rate_polled(void *data, bool wraparound) -{ - rarch_setting_t *setting = (rarch_setting_t*)data; - float refresh_rate = 0.0; - - if (!setting) - return -1; - - if ((refresh_rate = video_driver_get_refresh_rate()) == 0.0) - return -1; - - driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &refresh_rate); - /* Incase refresh rate update forced non-block video. */ - command_event(CMD_EVENT_VIDEO_SET_BLOCKING_STATE, NULL); - - if (setting_generic_action_ok_default(setting, wraparound) != 0) - return -1; - - return 0; -} - -int setting_action_ok_bind_all(void *data, bool wraparound) -{ - (void)wraparound; - if (!menu_input_key_bind_set_mode(MENU_INPUT_BINDS_CTL_BIND_ALL, data)) - return -1; - return 0; -} - -int setting_action_ok_bind_all_save_autoconfig(void *data, - bool wraparound) -{ - unsigned index_offset; - rarch_setting_t *setting = (rarch_setting_t*)data; - const char *name = NULL; - - (void)wraparound; - - if (!setting) - return -1; - - index_offset = setting->index_offset; - name = input_config_get_device_name(index_offset); - - if(!string_is_empty(name) && config_save_autoconf_profile(name, index_offset)) - runloop_msg_queue_push( - msg_hash_to_str(MSG_AUTOCONFIG_FILE_SAVED_SUCCESSFULLY), 1, 100, true); - else - runloop_msg_queue_push( - msg_hash_to_str(MSG_AUTOCONFIG_FILE_ERROR_SAVING), 1, 100, true); - - - return 0; -} - -int setting_action_ok_bind_defaults(void *data, bool wraparound) -{ - unsigned i; - menu_input_ctx_bind_limits_t lim; - struct retro_keybind *target = NULL; - const struct retro_keybind *def_binds = NULL; - rarch_setting_t *setting = (rarch_setting_t*)data; - - (void)wraparound; - - if (!setting) - return -1; - - target = &input_config_binds[setting->index_offset][0]; - def_binds = (setting->index_offset) ? - retro_keybinds_rest : retro_keybinds_1; - - lim.min = MENU_SETTINGS_BIND_BEGIN; - lim.max = MENU_SETTINGS_BIND_LAST; - - menu_input_key_bind_set_min_max(&lim); - - for (i = MENU_SETTINGS_BIND_BEGIN; - i <= MENU_SETTINGS_BIND_LAST; i++, target++) - { - target->key = def_binds[i - MENU_SETTINGS_BIND_BEGIN].key; - target->joykey = NO_BTN; - target->joyaxis = AXIS_NONE; - target->mbutton = NO_BTN; - } - - return 0; -} - static enum msg_hash_enums action_ok_dl_to_enum(unsigned lbl) { switch (lbl) diff --git a/menu/menu_cbs.h b/menu/menu_cbs.h index 8c75106c0c..3126f8d2bf 100644 --- a/menu/menu_cbs.h +++ b/menu/menu_cbs.h @@ -178,38 +178,6 @@ int action_right_input_desc_kbd(unsigned type, const char *label, int action_right_cheat(unsigned type, const char *label, bool wraparound); -int setting_action_ok_video_refresh_rate_auto(void *data, bool wraparound); - -int setting_action_ok_video_refresh_rate_polled(void *data, bool wraparound); - -int setting_action_ok_bind_all(void *data, bool wraparound); - -int setting_action_ok_bind_all_save_autoconfig(void *data, - bool wraparound); - -int setting_action_ok_bind_defaults(void *data, bool wraparound); - -int setting_action_left_analog_dpad_mode(void *data, bool wraparound); - -int setting_action_left_libretro_device_type( - void *data, bool wraparound); - -int setting_action_left_bind_device(void *data, bool wraparound); - -int setting_action_left_mouse_index(void *data, bool wraparound); - -int setting_uint_action_left_custom_viewport_width( - void *data, bool wraparound); - -int setting_uint_action_left_custom_viewport_height( - void *data, bool wraparound); - -int setting_string_action_left_driver(void *data, - bool wraparound); - -int setting_string_action_left_audio_device( - void *data, bool wraparound); - /* End of function callbacks */ int menu_cbs_init_bind_left(menu_file_list_cbs_t *cbs, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 3137268689..7a3086f291 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -159,10 +159,122 @@ struct string_options_entry size_t len; }; -static int setting_action_ok_uint(void *data, bool wraparound) +static int setting_action_ok_bind_all(rarch_setting_t *setting, bool wraparound) +{ + (void)wraparound; + if (!menu_input_key_bind_set_mode(MENU_INPUT_BINDS_CTL_BIND_ALL, setting)) + return -1; + return 0; +} + +static int setting_action_ok_bind_all_save_autoconfig(rarch_setting_t *setting, + bool wraparound) +{ + unsigned index_offset = 0; + const char *name = NULL; + + (void)wraparound; + + if (!setting) + return -1; + + index_offset = setting->index_offset; + name = input_config_get_device_name(index_offset); + + if(!string_is_empty(name) && config_save_autoconf_profile(name, index_offset)) + runloop_msg_queue_push( + msg_hash_to_str(MSG_AUTOCONFIG_FILE_SAVED_SUCCESSFULLY), 1, 100, true); + else + runloop_msg_queue_push( + msg_hash_to_str(MSG_AUTOCONFIG_FILE_ERROR_SAVING), 1, 100, true); + + + return 0; +} + +static int setting_action_ok_bind_defaults(rarch_setting_t *setting, bool wraparound) +{ + unsigned i; + menu_input_ctx_bind_limits_t lim; + struct retro_keybind *target = NULL; + const struct retro_keybind *def_binds = NULL; + + (void)wraparound; + + if (!setting) + return -1; + + target = &input_config_binds[setting->index_offset][0]; + def_binds = (setting->index_offset) ? + retro_keybinds_rest : retro_keybinds_1; + + lim.min = MENU_SETTINGS_BIND_BEGIN; + lim.max = MENU_SETTINGS_BIND_LAST; + + menu_input_key_bind_set_min_max(&lim); + + for (i = MENU_SETTINGS_BIND_BEGIN; + i <= MENU_SETTINGS_BIND_LAST; i++, target++) + { + target->key = def_binds[i - MENU_SETTINGS_BIND_BEGIN].key; + target->joykey = NO_BTN; + target->joyaxis = AXIS_NONE; + target->mbutton = NO_BTN; + } + + return 0; +} + +static int setting_action_ok_video_refresh_rate_auto( + rarch_setting_t *setting, bool wraparound) +{ + double video_refresh_rate = 0.0; + double deviation = 0.0; + unsigned sample_points = 0; + + if (!setting) + return -1; + + if (video_monitor_fps_statistics(&video_refresh_rate, + &deviation, &sample_points)) + { + float video_refresh_rate_float = (float)video_refresh_rate; + driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &video_refresh_rate_float); + /* Incase refresh rate update forced non-block video. */ + command_event(CMD_EVENT_VIDEO_SET_BLOCKING_STATE, NULL); + } + + if (setting_generic_action_ok_default(setting, wraparound) != 0) + return -1; + + return 0; +} + +static int setting_action_ok_video_refresh_rate_polled(rarch_setting_t *setting, + bool wraparound) +{ + float refresh_rate = 0.0; + + if (!setting) + return -1; + + if ((refresh_rate = video_driver_get_refresh_rate()) == 0.0) + return -1; + + driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &refresh_rate); + /* Incase refresh rate update forced non-block video. */ + command_event(CMD_EVENT_VIDEO_SET_BLOCKING_STATE, NULL); + + if (setting_generic_action_ok_default(setting, wraparound) != 0) + return -1; + + return 0; +} + + +static int setting_action_ok_uint(rarch_setting_t *setting, bool wraparound) { char enum_idx[16]; - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return -1; @@ -175,10 +287,10 @@ static int setting_action_ok_uint(void *data, bool wraparound) return 0; } -static void setting_get_string_representation_video_stream_quality(void *data, +static void setting_get_string_representation_video_stream_quality( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -200,10 +312,9 @@ static void setting_get_string_representation_video_stream_quality(void *data, } } -static void setting_get_string_representation_video_record_quality(void *data, +static void setting_get_string_representation_video_record_quality(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -228,20 +339,18 @@ static void setting_get_string_representation_video_record_quality(void *data, } } -static void setting_get_string_representation_video_filter(void *data, +static void setting_get_string_representation_video_filter(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; fill_short_pathname_representation(s, setting->value.target.string, len); } -static void setting_get_string_representation_state_slot(void *data, +static void setting_get_string_representation_state_slot(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -250,20 +359,18 @@ static void setting_get_string_representation_state_slot(void *data, strlcat(s, " (Auto)", len); } -static void setting_get_string_representation_float_video_msg_color(void *data, +static void setting_get_string_representation_float_video_msg_color(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; snprintf(s, len, "%d", (int)(*setting->value.target.fraction * 255.0f)); } -static void setting_get_string_representation_max_users(void *data, +static void setting_get_string_representation_max_users(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -271,10 +378,10 @@ static void setting_get_string_representation_max_users(void *data, } #ifdef HAVE_CHEEVOS -static void setting_get_string_representation_cheevos_password(void *data, +static void setting_get_string_representation_cheevos_password( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -286,10 +393,10 @@ static void setting_get_string_representation_cheevos_password(void *data, #endif #if TARGET_OS_IPHONE -static void setting_get_string_representation_uint_keyboard_gamepad_mapping_type(void *data, +static void setting_get_string_representation_uint_keyboard_gamepad_mapping_type( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -311,10 +418,10 @@ static void setting_get_string_representation_uint_keyboard_gamepad_mapping_type } #endif -static void setting_get_string_representation_uint_menu_thumbnails(void *data, +static void setting_get_string_representation_uint_menu_thumbnails( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -342,10 +449,10 @@ static void setting_get_string_representation_uint_menu_thumbnails(void *data, } } -static void setting_get_string_representation_uint_menu_left_thumbnails(void *data, +static void setting_get_string_representation_uint_menu_left_thumbnails( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -373,10 +480,10 @@ static void setting_get_string_representation_uint_menu_left_thumbnails(void *da } } -static void setting_get_string_representation_uint_xmb_icon_theme(void *data, +static void setting_get_string_representation_uint_xmb_icon_theme( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -429,10 +536,10 @@ static void setting_get_string_representation_uint_xmb_icon_theme(void *data, } } -static void setting_get_string_representation_uint_xmb_layout(void *data, +static void setting_get_string_representation_uint_xmb_layout( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -450,10 +557,10 @@ static void setting_get_string_representation_uint_xmb_layout(void *data, } } -static void setting_get_string_representation_uint_materialui_menu_color_theme(void *data, +static void setting_get_string_representation_uint_materialui_menu_color_theme( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -499,10 +606,10 @@ static void setting_get_string_representation_uint_materialui_menu_color_theme(v } } -static void setting_get_string_representation_uint_xmb_menu_color_theme(void *data, +static void setting_get_string_representation_uint_xmb_menu_color_theme( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -583,10 +690,10 @@ static void setting_get_string_representation_uint_xmb_menu_color_theme(void *da } } -static void setting_get_string_representation_uint_xmb_shader_pipeline(void *data, +static void setting_get_string_representation_uint_xmb_shader_pipeline( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -628,10 +735,9 @@ static void setting_get_string_representation_uint_xmb_shader_pipeline(void *dat } } -static void setting_get_string_representation_uint_video_monitor_index(void *data, +static void setting_get_string_representation_uint_video_monitor_index(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -642,12 +748,11 @@ static void setting_get_string_representation_uint_video_monitor_index(void *dat strlcpy(s, "0 (Auto)", len); } -static void setting_get_string_representation_uint_custom_viewport_width(void *data, +static void setting_get_string_representation_uint_custom_viewport_width(rarch_setting_t *setting, char *s, size_t len) { struct retro_game_geometry *geom = NULL; struct retro_system_av_info *av_info = NULL; - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -663,12 +768,11 @@ static void setting_get_string_representation_uint_custom_viewport_width(void *d *setting->value.target.unsigned_integer); } -static void setting_get_string_representation_uint_custom_viewport_height(void *data, +static void setting_get_string_representation_uint_custom_viewport_height(rarch_setting_t *setting, char *s, size_t len) { struct retro_game_geometry *geom = NULL; struct retro_system_av_info *av_info = NULL; - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -685,10 +789,9 @@ static void setting_get_string_representation_uint_custom_viewport_height(void * } #ifdef HAVE_WASAPI -static void setting_get_string_representation_int_audio_wasapi_sh_buffer_length(void *data, +static void setting_get_string_representation_int_audio_wasapi_sh_buffer_length(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -702,10 +805,10 @@ static void setting_get_string_representation_int_audio_wasapi_sh_buffer_length( } #endif -static void setting_get_string_representation_crt_switch_resolution_super(void *data, +static void setting_get_string_representation_crt_switch_resolution_super( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -715,10 +818,93 @@ static void setting_get_string_representation_crt_switch_resolution_super(void * snprintf(s, len, "%d", *setting->value.target.unsigned_integer); } -static int setting_uint_action_left_crt_switch_resolution_super( - void *data, bool wraparound) +static int setting_action_left_analog_dpad_mode(rarch_setting_t *setting, bool wraparound) +{ + unsigned port = 0; + settings_t *settings = config_get_ptr(); + + if (!setting) + return -1; + + port = setting->index_offset; + + configuration_set_uint(settings, settings->uints.input_analog_dpad_mode[port], + (settings->uints.input_analog_dpad_mode + [port] + ANALOG_DPAD_LAST - 1) % ANALOG_DPAD_LAST); + + return 0; +} + +static int setting_action_left_libretro_device_type( + rarch_setting_t *setting, bool wraparound) +{ + retro_ctx_controller_info_t pad; + unsigned current_device, current_idx, i, devices[128], + types = 0, port = 0; + const struct retro_controller_info *desc = NULL; + rarch_system_info_t *system = NULL; + + if (!setting) + return -1; + + port = setting->index_offset; + + devices[types++] = RETRO_DEVICE_NONE; + devices[types++] = RETRO_DEVICE_JOYPAD; + + system = runloop_get_system_info(); + + if (system) + { + /* Only push RETRO_DEVICE_ANALOG as default if we use an + * older core which doesn't use SET_CONTROLLER_INFO. */ + if (!system->ports.size) + devices[types++] = RETRO_DEVICE_ANALOG; + + if (port < system->ports.size) + desc = &system->ports.data[port]; + } + + if (desc) + { + for (i = 0; i < desc->num_types; i++) + { + unsigned id = desc->types[i].id; + if (types < ARRAY_SIZE(devices) && + id != RETRO_DEVICE_NONE && + id != RETRO_DEVICE_JOYPAD) + devices[types++] = id; + } + } + + current_device = input_config_get_device(port); + current_idx = 0; + for (i = 0; i < types; i++) + { + if (current_device != devices[i]) + continue; + + current_idx = i; + break; + } + + current_device = devices + [(current_idx + types - 1) % types]; + + input_config_set_device(port, current_device); + + pad.port = port; + pad.device = current_device; + + core_set_controller_port_device(&pad); + + return 0; +} + + +static int setting_uint_action_left_crt_switch_resolution_super( + rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return -1; @@ -741,15 +927,175 @@ static int setting_uint_action_left_crt_switch_resolution_super( return 0; } +static int setting_action_left_bind_device(rarch_setting_t *setting, bool wraparound) +{ + unsigned *p = NULL; + unsigned index_offset = 0; + unsigned max_devices = input_config_get_device_count(); + settings_t *settings = config_get_ptr(); + + if (!setting || max_devices == 0) + return -1; + + index_offset = setting->index_offset; + + p = &settings->uints.input_joypad_map[index_offset]; + + if ((*p) >= max_devices) + *p = max_devices - 1; + else if ((*p) > 0) + (*p)--; + + return 0; +} + + +static int setting_action_left_mouse_index(rarch_setting_t *setting, bool wraparound) +{ + settings_t *settings = config_get_ptr(); + + if (!setting) + return -1; + + if (settings->uints.input_mouse_index[setting->index_offset]) + { + --settings->uints.input_mouse_index[setting->index_offset]; + settings->modified = true; + } + + return 0; +} + +static int setting_uint_action_left_custom_viewport_width( + rarch_setting_t *setting, bool wraparound) +{ + video_viewport_t vp; + struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); + video_viewport_t *custom = video_viewport_get_custom(); + settings_t *settings = config_get_ptr(); + struct retro_game_geometry *geom = (struct retro_game_geometry*) + &av_info->geometry; + + if (!settings || !av_info) + return -1; + + video_driver_get_viewport_info(&vp); + + if (custom->width <= 1) + custom->width = 1; + else if (settings->bools.video_scale_integer) + { + if (custom->width > geom->base_width) + custom->width -= geom->base_width; + } + else + custom->width -= 1; + + aspectratio_lut[ASPECT_RATIO_CUSTOM].value = + (float)custom->width / custom->height; + + return 0; +} + +static int setting_uint_action_left_custom_viewport_height( + rarch_setting_t *setting, bool wraparound) +{ + video_viewport_t vp; + struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); + video_viewport_t *custom = video_viewport_get_custom(); + settings_t *settings = config_get_ptr(); + struct retro_game_geometry *geom = (struct retro_game_geometry*) + &av_info->geometry; + + if (!settings || !av_info) + return -1; + + video_driver_get_viewport_info(&vp); + + if (custom->height <= 1) + custom->height = 1; + else if (settings->bools.video_scale_integer) + { + if (custom->height > geom->base_height) + custom->height -= geom->base_height; + } + else + custom->height -= 1; + + aspectratio_lut[ASPECT_RATIO_CUSTOM].value = + (float)custom->width / custom->height; + + return 0; +} + +static int setting_string_action_left_audio_device( + rarch_setting_t *setting, bool wraparound) +{ +#if !defined(RARCH_CONSOLE) + int audio_device_index; + struct string_list *ptr = NULL; + + if (!audio_driver_get_devices_list((void**)&ptr)) + return -1; + + if (!ptr) + return -1; + + /* Get index in the string list */ + audio_device_index = string_list_find_elem( + ptr, setting->value.target.string) - 1; + audio_device_index--; + + /* Reset index if needed */ + if (audio_device_index < 0) + audio_device_index = (int)(ptr->size - 1); + + strlcpy(setting->value.target.string, ptr->elems[audio_device_index].data, setting->size); +#endif + + return 0; +} + +static int setting_string_action_left_driver(rarch_setting_t *setting, + bool wraparound) +{ + driver_ctx_info_t drv; + + if (!setting) + return -1; + + drv.label = setting->name; + drv.s = setting->value.target.string; + drv.len = setting->size; + + if (!driver_ctl(RARCH_DRIVER_CTL_FIND_PREV, &drv)) + { + settings_t *settings = config_get_ptr(); + + if (settings && settings->bools.menu_navigation_wraparound_enable) + { + drv.label = setting->name; + drv.s = setting->value.target.string; + drv.len = setting->size; + driver_ctl(RARCH_DRIVER_CTL_FIND_LAST, &drv); + } + } + + if (setting->change_handler) + setting->change_handler(setting); + + return 0; +} + + #ifdef HAVE_NETWORKING static int setting_string_action_left_netplay_mitm_server( - void *data, bool wraparound) + rarch_setting_t *setting, bool wraparound) { int i; int offset = 0; bool found = false; unsigned list_len = ARRAY_SIZE(netplay_mitm_server_list); - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return -1; @@ -786,13 +1132,12 @@ static int setting_string_action_left_netplay_mitm_server( } static int setting_string_action_right_netplay_mitm_server( - void *data, bool wraparound) + rarch_setting_t *setting, bool wraparound) { unsigned i; int offset = 0; bool found = false; unsigned list_len = ARRAY_SIZE(netplay_mitm_server_list); - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return -1; @@ -827,9 +1172,8 @@ static int setting_string_action_right_netplay_mitm_server( #endif static int setting_uint_action_right_crt_switch_resolution_super( - void *data, bool wraparound) + rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return -1; @@ -853,7 +1197,7 @@ static int setting_uint_action_right_crt_switch_resolution_super( } static int setting_uint_action_right_custom_viewport_width( - void *data, bool wraparound) + rarch_setting_t *setting, bool wraparound) { video_viewport_t vp; struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); @@ -879,7 +1223,7 @@ static int setting_uint_action_right_custom_viewport_width( } static int setting_uint_action_right_custom_viewport_height( - void *data, bool wraparound) + rarch_setting_t *setting, bool wraparound) { video_viewport_t vp; struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); @@ -906,11 +1250,10 @@ static int setting_uint_action_right_custom_viewport_height( #if !defined(RARCH_CONSOLE) static int setting_string_action_right_audio_device( - void *data, bool wraparound) + rarch_setting_t *setting, bool wraparound) { int audio_device_index; struct string_list *ptr = NULL; - rarch_setting_t *setting = (rarch_setting_t*)data; if (!audio_driver_get_devices_list((void**)&ptr)) return -1; @@ -933,11 +1276,10 @@ static int setting_string_action_right_audio_device( } #endif -static int setting_string_action_right_driver(void *data, +static int setting_string_action_right_driver(rarch_setting_t *setting, bool wraparound) { driver_ctx_info_t drv; - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return -1; @@ -965,13 +1307,12 @@ static int setting_string_action_right_driver(void *data, return 0; } -int setting_string_action_left_midi_input(void *data, bool wraparound) +static int setting_string_action_left_midi_input(rarch_setting_t *setting, bool wraparound) { struct string_list *list = midi_driver_get_avail_inputs(); if (list && list->size > 1) { - rarch_setting_t *setting = (rarch_setting_t*)data; int i = string_list_find_elem(list, setting->value.target.string) - 2; if (wraparound && i == -1) @@ -987,13 +1328,12 @@ int setting_string_action_left_midi_input(void *data, bool wraparound) return -1; } -int setting_string_action_right_midi_input(void *data, bool wraparound) +static int setting_string_action_right_midi_input(rarch_setting_t *setting, bool wraparound) { struct string_list *list = midi_driver_get_avail_inputs(); if (list && list->size > 1) { - rarch_setting_t *setting = (rarch_setting_t*)data; int i = string_list_find_elem(list, setting->value.target.string); if (wraparound && i == (int)list->size) @@ -1009,13 +1349,12 @@ int setting_string_action_right_midi_input(void *data, bool wraparound) return -1; } -int setting_string_action_left_midi_output(void *data, bool wraparound) +static int setting_string_action_left_midi_output(rarch_setting_t *setting, bool wraparound) { struct string_list *list = midi_driver_get_avail_outputs(); if (list && list->size > 1) { - rarch_setting_t *setting = (rarch_setting_t*)data; int i = string_list_find_elem(list, setting->value.target.string) - 2; if (wraparound && i == -1) @@ -1031,13 +1370,12 @@ int setting_string_action_left_midi_output(void *data, bool wraparound) return -1; } -int setting_string_action_right_midi_output(void *data, bool wraparound) +static int setting_string_action_right_midi_output(rarch_setting_t *setting, bool wraparound) { struct string_list *list = midi_driver_get_avail_outputs(); if (list && list->size > 1) { - rarch_setting_t *setting = (rarch_setting_t*)data; int i = string_list_find_elem(list, setting->value.target.string); if (wraparound && i == (int)list->size) @@ -1053,89 +1391,80 @@ int setting_string_action_right_midi_output(void *data, bool wraparound) return -1; } -static void setting_get_string_representation_uint_cheat_exact(void *data, +static void setting_get_string_representation_uint_cheat_exact(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) snprintf(s, len, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SEARCH_EXACT_VAL), *setting->value.target.unsigned_integer, *setting->value.target.unsigned_integer); } -static void setting_get_string_representation_uint_cheat_lt(void *data, +static void setting_get_string_representation_uint_cheat_lt(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SEARCH_LT_VAL), len); } -static void setting_get_string_representation_uint_cheat_gt(void *data, +static void setting_get_string_representation_uint_cheat_gt(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SEARCH_GT_VAL), len); } -static void setting_get_string_representation_uint_cheat_lte(void *data, +static void setting_get_string_representation_uint_cheat_lte(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SEARCH_LTE_VAL), len); } -static void setting_get_string_representation_uint_cheat_gte(void *data, +static void setting_get_string_representation_uint_cheat_gte(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SEARCH_GTE_VAL), len); } -static void setting_get_string_representation_uint_cheat_eq(void *data, +static void setting_get_string_representation_uint_cheat_eq(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SEARCH_EQ_VAL), len); } -static void setting_get_string_representation_uint_cheat_neq(void *data, +static void setting_get_string_representation_uint_cheat_neq(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SEARCH_NEQ_VAL), len); } -static void setting_get_string_representation_uint_cheat_eqplus(void *data, +static void setting_get_string_representation_uint_cheat_eqplus(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) snprintf(s, len, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SEARCH_EQPLUS_VAL), *setting->value.target.unsigned_integer, *setting->value.target.unsigned_integer); } -static void setting_get_string_representation_uint_cheat_eqminus(void *data, +static void setting_get_string_representation_uint_cheat_eqminus(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) snprintf(s, len, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SEARCH_EQMINUS_VAL), *setting->value.target.unsigned_integer, *setting->value.target.unsigned_integer); } -static void setting_get_string_representation_uint_cheat_browse_address(void *data, +static void setting_get_string_representation_uint_cheat_browse_address(rarch_setting_t *setting, char *s, size_t len) { unsigned int address = cheat_manager_state.browse_address; unsigned int address_mask = 0; unsigned int prev_val = 0; unsigned int curr_val = 0 ; - rarch_setting_t *setting = (rarch_setting_t*)data; + if (setting) snprintf(s, len, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_SEARCH_EQMINUS_VAL), *setting->value.target.unsigned_integer, *setting->value.target.unsigned_integer); @@ -1146,10 +1475,9 @@ static void setting_get_string_representation_uint_cheat_browse_address(void *da } -static void setting_get_string_representation_uint_video_rotation(void *data, +static void setting_get_string_representation_uint_video_rotation(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) { char rotation_lut[4][32] = @@ -1166,10 +1494,9 @@ static void setting_get_string_representation_uint_video_rotation(void *data, } static void setting_get_string_representation_uint_aspect_ratio_index( - void *data, + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) strlcpy(s, aspectratio_lut[*setting->value.target.unsigned_integer].name, @@ -1177,10 +1504,9 @@ static void setting_get_string_representation_uint_aspect_ratio_index( } static void setting_get_string_representation_uint_crt_switch_resolutions( - void *data, + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -1199,10 +1525,9 @@ static void setting_get_string_representation_uint_crt_switch_resolutions( } static void setting_get_string_representation_uint_audio_resampler_quality( - void *data, + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -1235,14 +1560,14 @@ static void setting_get_string_representation_uint_audio_resampler_quality( } } -static void setting_get_string_representation_uint_libretro_device(void *data, +static void setting_get_string_representation_uint_libretro_device( + rarch_setting_t *setting, char *s, size_t len) { unsigned index_offset, device; const struct retro_controller_description *desc = NULL; const char *name = NULL; rarch_system_info_t *system = runloop_get_system_info(); - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -1285,11 +1610,11 @@ static void setting_get_string_representation_uint_libretro_device(void *data, strlcpy(s, name, len); } -static void setting_get_string_representation_uint_analog_dpad_mode(void *data, +static void setting_get_string_representation_uint_analog_dpad_mode( + rarch_setting_t *setting, char *s, size_t len) { const char *modes[3]; - rarch_setting_t *setting = (rarch_setting_t*)data; modes[0] = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NONE); modes[1] = msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LEFT_ANALOG); @@ -1299,10 +1624,10 @@ static void setting_get_string_representation_uint_analog_dpad_mode(void *data, } #ifdef HAVE_THREADS -static void setting_get_string_representation_uint_autosave_interval(void *data, +static void setting_get_string_representation_uint_autosave_interval( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -1315,17 +1640,18 @@ static void setting_get_string_representation_uint_autosave_interval(void *data, #endif #if defined(HAVE_NETWORKING) -static void setting_get_string_representation_netplay_mitm_server(void *data, +static void setting_get_string_representation_netplay_mitm_server( + rarch_setting_t *setting, char *s, size_t len) { } #endif -static void setting_get_string_representation_toggle_gamepad_combo(void *data, +static void setting_get_string_representation_toggle_gamepad_combo( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -1350,10 +1676,10 @@ static void setting_get_string_representation_toggle_gamepad_combo(void *data, } #ifdef HAVE_NETWORKING -static void setting_get_string_representation_netplay_share_digital(void *data, +static void setting_get_string_representation_netplay_share_digital( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -1381,10 +1707,10 @@ static void setting_get_string_representation_netplay_share_digital(void *data, } } -static void setting_get_string_representation_netplay_share_analog(void *data, +static void setting_get_string_representation_netplay_share_analog( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -1409,10 +1735,10 @@ static void setting_get_string_representation_netplay_share_analog(void *data, } #endif -static void setting_get_string_representation_poll_type_behavior(void *data, +static void setting_get_string_representation_poll_type_behavior( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -1437,7 +1763,8 @@ static void setting_get_string_representation_poll_type_behavior(void *data, } #ifdef HAVE_LANGEXTRA -static void setting_get_string_representation_uint_user_language(void *data, +static void setting_get_string_representation_uint_user_language( + rarch_setting_t *setting, char *s, size_t len) { const char *modes[RETRO_LANGUAGE_LAST]; @@ -1464,11 +1791,10 @@ static void setting_get_string_representation_uint_user_language(void *data, } #endif -static void setting_get_string_representation_uint_libretro_log_level(void *data, +static void setting_get_string_representation_uint_libretro_log_level( + rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (setting) { static const char *modes[] = { @@ -1836,9 +2162,8 @@ void *setting_get_ptr(rarch_setting_t *setting) * * Get a setting value's string representation. **/ -void setting_get_string_representation(void *data, char *s, size_t len) +void setting_get_string_representation(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t* setting = (rarch_setting_t*)data; if (!setting || !s) return; @@ -1855,9 +2180,8 @@ void setting_get_string_representation(void *data, char *s, size_t len) * * Returns: 0 on success, -1 on error. **/ -static int setting_action_start_bind_device(void *data) +static int setting_action_start_bind_device(rarch_setting_t *setting) { - rarch_setting_t *setting = (rarch_setting_t*)data; settings_t *settings = config_get_ptr(); if (!setting || !settings) @@ -1869,7 +2193,7 @@ static int setting_action_start_bind_device(void *data) } -static int setting_action_start_custom_viewport_width(void *data) +static int setting_action_start_custom_viewport_width(rarch_setting_t *setting) { video_viewport_t vp; struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); @@ -1895,7 +2219,7 @@ static int setting_action_start_custom_viewport_width(void *data) return 0; } -static int setting_action_start_custom_viewport_height(void *data) +static int setting_action_start_custom_viewport_height(rarch_setting_t *setting) { video_viewport_t vp; struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); @@ -1923,10 +2247,8 @@ static int setting_action_start_custom_viewport_height(void *data) -static int setting_action_start_analog_dpad_mode(void *data) +static int setting_action_start_analog_dpad_mode(rarch_setting_t *setting) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (!setting) return -1; @@ -1935,16 +2257,15 @@ static int setting_action_start_analog_dpad_mode(void *data) return 0; } -static int setting_action_start_libretro_device_type(void *data) +static int setting_action_start_libretro_device_type(rarch_setting_t *setting) { retro_ctx_controller_info_t pad; unsigned index_offset, current_device; unsigned devices[128], types = 0, port = 0; const struct retro_controller_info *desc = NULL; rarch_system_info_t *system = runloop_get_system_info(); - rarch_setting_t *setting = (rarch_setting_t*)data; - if (setting_generic_action_start_default(setting) != 0) + if (!setting || setting_generic_action_start_default(setting) != 0) return -1; index_offset = setting->index_offset; @@ -1990,8 +2311,10 @@ static int setting_action_start_libretro_device_type(void *data) } static int setting_action_start_video_refresh_rate_auto( - void *data) + rarch_setting_t *setting) { + (void)setting; + video_driver_monitor_reset(); return 0; } @@ -2000,10 +2323,9 @@ static int setting_action_start_video_refresh_rate_auto( ******* ACTION TOGGLE CALLBACK FUNCTIONS ******* **/ -static int setting_action_right_analog_dpad_mode(void *data, bool wraparound) +static int setting_action_right_analog_dpad_mode(rarch_setting_t *setting, bool wraparound) { unsigned port = 0; - rarch_setting_t *setting = (rarch_setting_t*)data; settings_t *settings = config_get_ptr(); if (!setting) @@ -2020,13 +2342,12 @@ static int setting_action_right_analog_dpad_mode(void *data, bool wraparound) } static int setting_action_right_libretro_device_type( - void *data, bool wraparound) + rarch_setting_t *setting, bool wraparound) { retro_ctx_controller_info_t pad; unsigned current_device, current_idx, i, devices[128], types = 0, port = 0; const struct retro_controller_info *desc = NULL; - rarch_setting_t *setting = (rarch_setting_t*)data; rarch_system_info_t *system = runloop_get_system_info(); if (!setting) @@ -2084,12 +2405,11 @@ static int setting_action_right_libretro_device_type( return 0; } -static int setting_action_right_bind_device(void *data, bool wraparound) +static int setting_action_right_bind_device(rarch_setting_t *setting, bool wraparound) { unsigned index_offset; unsigned *p = NULL; unsigned max_devices = input_config_get_device_count(); - rarch_setting_t *setting = (rarch_setting_t*)data; settings_t *settings = config_get_ptr(); if (!setting) @@ -2105,9 +2425,8 @@ static int setting_action_right_bind_device(void *data, bool wraparound) return 0; } -static int setting_action_right_mouse_index(void *data, bool wraparound) +static int setting_action_right_mouse_index(rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; settings_t *settings = config_get_ptr(); if (!setting) @@ -2125,19 +2444,18 @@ static int setting_action_right_mouse_index(void *data, bool wraparound) static void setting_get_string_representation_st_float_video_refresh_rate_polled( - void *data, char *s, size_t len) + rarch_setting_t *setting, char *s, size_t len) { snprintf(s, len, "%.3f Hz", video_driver_get_refresh_rate()); } static void setting_get_string_representation_st_float_video_refresh_rate_auto( - void *data, char *s, size_t len) + rarch_setting_t *setting, char *s, size_t len) { double video_refresh_rate = 0.0; double deviation = 0.0; unsigned sample_points = 0; - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return; @@ -2152,12 +2470,11 @@ setting_get_string_representation_st_float_video_refresh_rate_auto( strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), len); } -static void get_string_representation_bind_device(void * data, char *s, +static void get_string_representation_bind_device(rarch_setting_t *setting, char *s, size_t len) { unsigned index_offset, map = 0; unsigned max_devices = input_config_get_device_count(); - rarch_setting_t *setting = (rarch_setting_t*)data; settings_t *settings = config_get_ptr(); if (!setting) @@ -2963,10 +3280,8 @@ static const char* config_get_audio_resampler_driver_options(void) return char_list_new_special(STRING_LIST_AUDIO_RESAMPLER_DRIVERS, NULL); } -static int directory_action_start_generic(void *data) +static int directory_action_start_generic(rarch_setting_t *setting) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (!setting) return -1; diff --git a/menu/menu_setting.h b/menu/menu_setting.h index b3febd1600..b6b60ea6da 100644 --- a/menu/menu_setting.h +++ b/menu/menu_setting.h @@ -98,7 +98,7 @@ rarch_setting_t *menu_setting_find_enum(enum msg_hash_enums enum_idx); * * Get a setting value's string representation. **/ -void menu_setting_get_string_representation(void *data, char *s, size_t len); +void menu_setting_get_string_representation(rarch_setting_t *setting, char *s, size_t len); /** * menu_setting_get_label: diff --git a/setting_list.c b/setting_list.c index 57bd0579d5..f62df7c389 100644 --- a/setting_list.c +++ b/setting_list.c @@ -70,21 +70,20 @@ unsigned setting_get_bind_type(rarch_setting_t *setting) return setting->bind_type; } -static int setting_bind_action_ok(void *data, bool wraparound) +static int setting_bind_action_ok(rarch_setting_t *setting, bool wraparound) { (void)wraparound; /* TODO/FIXME - handle this */ #ifdef HAVE_MENU /* TODO - get rid of menu dependency */ - if (!menu_input_key_bind_set_mode(MENU_INPUT_BINDS_CTL_BIND_SINGLE, data)) + if (!menu_input_key_bind_set_mode(MENU_INPUT_BINDS_CTL_BIND_SINGLE, setting)) return -1; #endif return 0; } -static int setting_int_action_right_default(void *data, bool wraparound) +static int setting_int_action_right_default(rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; double max = 0.0f; if (!setting) @@ -117,11 +116,10 @@ static int setting_int_action_right_default(void *data, bool wraparound) } #ifdef HAVE_MENU -static int setting_bind_action_start(void *data) +static int setting_bind_action_start(rarch_setting_t *setting) { unsigned bind_type; struct retro_keybind *keybind = NULL; - rarch_setting_t *setting = (rarch_setting_t*)data; struct retro_keybind *def_binds = (struct retro_keybind *)retro_keybinds_1; if (!setting) @@ -146,55 +144,49 @@ static int setting_bind_action_start(void *data) } #endif -static void setting_get_string_representation_hex(void *data, +static void setting_get_string_representation_hex(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) snprintf(s, len, "%08x", *setting->value.target.unsigned_integer); } -void setting_get_string_representation_hex_and_uint(void *data, +void setting_get_string_representation_hex_and_uint(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) snprintf(s, len, "%u (%08X)", *setting->value.target.unsigned_integer, *setting->value.target.unsigned_integer); } -void setting_get_string_representation_uint(void *data, +void setting_get_string_representation_uint(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) snprintf(s, len, "%u", *setting->value.target.unsigned_integer); } -void setting_get_string_representation_size(void *data, +void setting_get_string_representation_size(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) snprintf(s, len, "%" PRI_SIZET, *setting->value.target.sizet); } -void setting_get_string_representation_size_in_mb(void *data, +void setting_get_string_representation_size_in_mb(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) snprintf(s, len, "%" PRI_SIZET, (*setting->value.target.sizet)/(1024*1024)); } -void setting_get_string_representation_uint_as_enum(void *data, +void setting_get_string_representation_uint_as_enum(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; if (setting) snprintf(s, len, "%s", msg_hash_to_str((enum msg_hash_enums)( @@ -252,12 +244,11 @@ static float recalc_step_based_on_length_of_action(rarch_setting_t *setting) return step < setting->step ? setting->step : step ; } -int setting_uint_action_left_default(void *data, bool wraparound) +int setting_uint_action_left_default(rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; - double min = 0.0f; + double min = 0.0f; bool overflowed = false; - float step = 0.0f ; + float step = 0.0f ; if (!setting) return -1; @@ -293,10 +284,9 @@ int setting_uint_action_left_default(void *data, bool wraparound) return 0; } -int setting_uint_action_right_default(void *data, bool wraparound) +int setting_uint_action_right_default(rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; - double max = 0.0f; + double max = 0.0f; float step = 0.0f ; if (!setting) @@ -331,9 +321,9 @@ int setting_uint_action_right_default(void *data, bool wraparound) return 0; } -int setting_uint_action_right_with_refresh(void *data, bool wraparound) +int setting_uint_action_right_with_refresh(rarch_setting_t *setting, bool wraparound) { - int retval = setting_uint_action_right_default(data, wraparound) ; + int retval = setting_uint_action_right_default(setting, wraparound) ; bool refresh = false; #ifdef HAVE_MENU @@ -344,9 +334,9 @@ int setting_uint_action_right_with_refresh(void *data, bool wraparound) return retval ; } -int setting_uint_action_left_with_refresh(void *data, bool wraparound) +int setting_uint_action_left_with_refresh(rarch_setting_t *setting, bool wraparound) { - int retval = setting_uint_action_left_default(data, wraparound) ; + int retval = setting_uint_action_left_default(setting, wraparound) ; bool refresh = false; #ifdef HAVE_MENU @@ -359,12 +349,11 @@ int setting_uint_action_left_with_refresh(void *data, bool wraparound) } -static int setting_size_action_left_default(void *data, bool wraparound) +static int setting_size_action_left_default(rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; - double min = 0.0f; + double min = 0.0f; bool overflowed = false; - float step = 0.0f ; + float step = 0.0f ; if (!setting) return -1; @@ -400,10 +389,9 @@ static int setting_size_action_left_default(void *data, bool wraparound) return 0; } -static int setting_size_action_right_default(void *data, bool wraparound) +static int setting_size_action_right_default(rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; - double max = 0.0f; + double max = 0.0f; float step = 0.0f ; if (!setting) @@ -438,10 +426,8 @@ static int setting_size_action_right_default(void *data, bool wraparound) return 0; } -int setting_generic_action_ok_default(void *data, bool wraparound) +int setting_generic_action_ok_default(rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (!setting) return -1; @@ -453,11 +439,9 @@ int setting_generic_action_ok_default(void *data, bool wraparound) return 0; } -static void setting_get_string_representation_int(void *data, +static void setting_get_string_representation_int(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (setting) snprintf(s, len, "%d", *setting->value.target.integer); } @@ -581,9 +565,8 @@ int setting_set_with_string_representation(rarch_setting_t* setting, } static int setting_fraction_action_left_default( - void *data, bool wraparound) + rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; double min = 0.0f; if (!setting) @@ -616,9 +599,8 @@ static int setting_fraction_action_left_default( } static int setting_fraction_action_right_default( - void *data, bool wraparound) + rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; double max = 0.0f; if (!setting) @@ -702,10 +684,8 @@ static void setting_reset_setting(rarch_setting_t* setting) setting->change_handler(setting); } -int setting_generic_action_start_default(void *data) +int setting_generic_action_start_default(rarch_setting_t *setting) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (!setting) return -1; @@ -714,10 +694,9 @@ int setting_generic_action_start_default(void *data) return 0; } -static void setting_get_string_representation_default(void *data, +static void setting_get_string_representation_default(rarch_setting_t *setting, char *s, size_t len) { - (void)data; strlcpy(s, "...", len); } @@ -730,11 +709,9 @@ static void setting_get_string_representation_default(void *data, * * Set a settings' label value. The setting is of type ST_BOOL. **/ -static void setting_get_string_representation_st_bool(void *data, +static void setting_get_string_representation_st_bool(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (setting) strlcpy(s, *setting->value.target.boolean ? setting->boolean.on_label : setting->boolean.off_label, len); @@ -750,21 +727,17 @@ static void setting_get_string_representation_st_bool(void *data, * * Set a settings' label value. The setting is of type ST_FLOAT. **/ -static void setting_get_string_representation_st_float(void *data, +static void setting_get_string_representation_st_float(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (setting) snprintf(s, len, setting->rounding_fraction, *setting->value.target.fraction); } -static void setting_get_string_representation_st_dir(void *data, +static void setting_get_string_representation_st_dir(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (setting) strlcpy(s, *setting->value.target.string ? @@ -772,29 +745,24 @@ static void setting_get_string_representation_st_dir(void *data, len); } -static void setting_get_string_representation_st_path(void *data, +static void setting_get_string_representation_st_path(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (setting) fill_short_pathname_representation(s, setting->value.target.string, len); } -static void setting_get_string_representation_st_string(void *data, +static void setting_get_string_representation_st_string(rarch_setting_t *setting, char *s, size_t len) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (setting) strlcpy(s, setting->value.target.string, len); } -static void setting_get_string_representation_st_bind(void *data, +static void setting_get_string_representation_st_bind(rarch_setting_t *setting, char *s, size_t len) { - unsigned index_offset; - rarch_setting_t *setting = (rarch_setting_t*)data; + unsigned index_offset = 0; const struct retro_keybind* keybind = NULL; const struct retro_keybind* auto_bind = NULL; @@ -809,10 +777,8 @@ static void setting_get_string_representation_st_bind(void *data, input_config_get_bind_string(s, keybind, auto_bind, len); } -static int setting_action_action_ok(void *data, bool wraparound) +static int setting_action_action_ok(rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (!setting) return -1; @@ -1348,9 +1314,8 @@ static rarch_setting_t setting_bind_setting(const char* name, return result; } -static int setting_int_action_left_default(void *data, bool wraparound) +static int setting_int_action_left_default(rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; double min = 0.0f; if (!setting) @@ -1382,10 +1347,8 @@ static int setting_int_action_left_default(void *data, bool wraparound) return 0; } -static int setting_bool_action_ok_default(void *data, bool wraparound) +static int setting_bool_action_ok_default(rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (!setting) return -1; @@ -1397,10 +1360,8 @@ static int setting_bool_action_ok_default(void *data, bool wraparound) return 0; } -static int setting_bool_action_toggle_default(void *data, bool wraparound) +static int setting_bool_action_toggle_default(rarch_setting_t *setting, bool wraparound) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (!setting) return -1; @@ -1412,10 +1373,8 @@ static int setting_bool_action_toggle_default(void *data, bool wraparound) return 0; } -int setting_string_action_start_generic(void *data) +int setting_string_action_start_generic(rarch_setting_t *setting) { - rarch_setting_t *setting = (rarch_setting_t*)data; - if (!setting) return -1; @@ -2355,11 +2314,10 @@ static void menu_input_st_hex_cb(void *userdata, const char *str) menu_input_dialog_end(); } -static int setting_generic_action_ok_linefeed(void *data, bool wraparound) +static int setting_generic_action_ok_linefeed(rarch_setting_t *setting, bool wraparound) { menu_input_ctx_line_t line; input_keyboard_line_complete_t cb = NULL; - rarch_setting_t *setting = (rarch_setting_t*)data; if (!setting) return -1; diff --git a/setting_list.h b/setting_list.h index 32cc4b6b4f..0045f88881 100644 --- a/setting_list.h +++ b/setting_list.h @@ -74,15 +74,15 @@ typedef struct rarch_setting_info rarch_setting_info_t; typedef struct rarch_setting_group_info rarch_setting_group_info_t; typedef void (*change_handler_t )(rarch_setting_t *data); -typedef int (*action_left_handler_t )(void *data, bool wraparound); -typedef int (*action_right_handler_t )(void *data, bool wraparound); -typedef int (*action_up_handler_t )(void *data); -typedef int (*action_down_handler_t )(void *data); -typedef int (*action_start_handler_t )(void *data); -typedef int (*action_cancel_handler_t )(void *data); -typedef int (*action_ok_handler_t )(void *data, bool wraparound); -typedef int (*action_select_handler_t )(void *data, bool wraparound); -typedef void (*get_string_representation_t )(void *data, char *s, size_t len); +typedef int (*action_left_handler_t )(rarch_setting_t *data, bool wraparound); +typedef int (*action_right_handler_t )(rarch_setting_t *setting, bool wraparound); +typedef int (*action_up_handler_t )(rarch_setting_t *setting); +typedef int (*action_down_handler_t )(rarch_setting_t *setting); +typedef int (*action_start_handler_t )(rarch_setting_t *setting); +typedef int (*action_cancel_handler_t )(rarch_setting_t *setting); +typedef int (*action_ok_handler_t )(rarch_setting_t *setting, bool wraparound); +typedef int (*action_select_handler_t )(rarch_setting_t *setting, bool wraparound); +typedef void (*get_string_representation_t )(rarch_setting_t *setting, char *s, size_t len); struct rarch_setting_group_info { @@ -416,11 +416,11 @@ int setting_set_with_string_representation( unsigned setting_get_bind_type(rarch_setting_t *setting); -int setting_string_action_start_generic(void *data); +int setting_string_action_start_generic(rarch_setting_t *setting); -int setting_generic_action_ok_default(void *data, bool wraparound); +int setting_generic_action_ok_default(rarch_setting_t *setting, bool wraparound); -int setting_generic_action_start_default(void *data); +int setting_generic_action_start_default(rarch_setting_t *setting); void settings_data_list_current_add_flags( rarch_setting_t **list, @@ -432,20 +432,20 @@ void settings_data_list_current_add_free_flags( rarch_setting_info_t *list_info, unsigned values); -void setting_get_string_representation_size_in_mb(void *data, +void setting_get_string_representation_size_in_mb(rarch_setting_t *setting, char *s, size_t len); -int setting_uint_action_right_with_refresh(void *data, bool wraparound) ; +int setting_uint_action_right_with_refresh(rarch_setting_t *setting, bool wraparound); -int setting_uint_action_left_with_refresh(void *data, bool wraparound) ; +int setting_uint_action_left_with_refresh(rarch_setting_t *setting, bool wraparound) ; -void setting_get_string_representation_uint_as_enum(void *data, +void setting_get_string_representation_uint_as_enum(rarch_setting_t *setting, char *s, size_t len); -int setting_uint_action_left_default(void *data, bool wraparound); -int setting_uint_action_right_default(void *data, bool wraparound); -void setting_get_string_representation_uint(void *data,char *s, size_t len); -void setting_get_string_representation_hex_and_uint(void *data, char *s, size_t len); +int setting_uint_action_left_default(rarch_setting_t *setting, bool wraparound); +int setting_uint_action_right_default(rarch_setting_t *setting, bool wraparound); +void setting_get_string_representation_uint(rarch_setting_t *setting, char *s, size_t len); +void setting_get_string_representation_hex_and_uint(rarch_setting_t *setting, char *s, size_t len); #define setting_get_type(setting) ((setting) ? setting->type : ST_NONE) RETRO_END_DECLS