Split up uint and int

This commit is contained in:
twinaphex 2017-04-28 19:55:09 +02:00
parent 7bbd20b31d
commit fdd85654d6

View File

@ -61,6 +61,15 @@ struct config_bool_setting
};
struct config_int_setting
{
const char *ident;
int *ptr;
bool def_enable;
int def;
bool handle;
};
struct config_uint_setting
{
const char *ident;
unsigned *ptr;
@ -132,6 +141,9 @@ struct config_path_setting
#define SETTING_INT(key, configval, default_enable, default_setting, handle_setting) \
GENERAL_SETTING(key, configval, default_enable, default_setting, struct config_int_setting, handle_setting)
#define SETTING_UINT(key, configval, default_enable, default_setting, handle_setting) \
GENERAL_SETTING(key, configval, default_enable, default_setting, struct config_uint_setting, handle_setting)
#define SETTING_PATH(key, configval, default_enable, default_setting, handle_setting) \
GENERAL_SETTING(key, configval, default_enable, default_setting, struct config_path_setting, handle_setting)
@ -926,80 +938,90 @@ static struct config_float_setting *populate_settings_float(settings_t *settings
return tmp;
}
static struct config_uint_setting *populate_settings_uint(settings_t *settings, int *size)
{
unsigned count = 0;
struct config_uint_setting *tmp = NULL;
SETTING_UINT("input_bind_timeout", &settings->input.bind_timeout, true, input_bind_timeout, false);
SETTING_UINT("input_turbo_period", &settings->input.turbo_period, true, turbo_period, false);
SETTING_UINT("input_duty_cycle", &settings->input.turbo_duty_cycle, true, turbo_duty_cycle, false);
SETTING_UINT("input_max_users", &settings->input.max_users, true, input_max_users, false);
SETTING_UINT("input_menu_toggle_gamepad_combo", &settings->input.menu_toggle_gamepad_combo, true, menu_toggle_gamepad_combo, false);
SETTING_UINT("audio_latency", &settings->audio.latency, false, 0 /* TODO */, false);
SETTING_UINT("audio_block_frames", &settings->audio.block_frames, true, 0, false);
SETTING_UINT("rewind_granularity", &settings->rewind_granularity, true, rewind_granularity, false);
SETTING_UINT("autosave_interval", &settings->autosave_interval, true, autosave_interval, false);
SETTING_UINT("libretro_log_level", &settings->libretro_log_level, true, libretro_log_level, false);
SETTING_UINT("keyboard_gamepad_mapping_type",&settings->input.keyboard_gamepad_mapping_type, true, 1, false);
SETTING_UINT("input_poll_type_behavior", &settings->input.poll_type_behavior, true, 2, false);
SETTING_UINT("video_monitor_index", &settings->video.monitor_index, true, monitor_index, false);
SETTING_UINT("video_fullscreen_x", &settings->video.fullscreen_x, true, fullscreen_x, false);
SETTING_UINT("video_fullscreen_y", &settings->video.fullscreen_y, true, fullscreen_y, false);
SETTING_UINT("video_window_x", &settings->video.window_x, true, fullscreen_x, false);
SETTING_UINT("video_window_y", &settings->video.window_y, true, fullscreen_y, false);
#ifdef HAVE_COMMAND
SETTING_UINT("network_cmd_port", &settings->network_cmd_port, true, network_cmd_port, false);
#endif
#ifdef HAVE_NETWORKGAMEPAD
SETTING_UINT("network_remote_base_port", &settings->network_remote_base_port, true, network_remote_base_port, false);
#endif
#ifdef GEKKO
SETTING_UINT("video_viwidth", &settings->video.viwidth, true, video_viwidth, false);
#endif
#ifdef HAVE_MENU
SETTING_UINT("dpi_override_value", &settings->menu.dpi.override_value, true, menu_dpi_override_value, false);
SETTING_UINT("menu_thumbnails", &settings->menu.thumbnails, true, menu_thumbnails_default, false);
#ifdef HAVE_XMB
SETTING_UINT("xmb_alpha_factor", &settings->menu.xmb.alpha_factor, true, xmb_alpha_factor, false);
SETTING_UINT("xmb_scale_factor", &settings->menu.xmb.scale_factor, true, xmb_scale_factor, false);
SETTING_UINT("xmb_theme", &settings->menu.xmb.theme, true, xmb_icon_theme, false);
SETTING_UINT("xmb_menu_color_theme", &settings->menu.xmb.menu_color_theme, true, xmb_theme, false);
#endif
SETTING_UINT("materialui_menu_color_theme", &settings->menu.materialui.menu_color_theme, true, MATERIALUI_THEME_BLUE, false);
#ifdef HAVE_SHADERPIPELINE
SETTING_UINT("menu_shader_pipeline", &settings->menu.xmb.shader_pipeline, true, menu_shader_pipeline, false);
#endif
#endif
SETTING_UINT("audio_out_rate", &settings->audio.out_rate, true, out_rate, false);
SETTING_UINT("custom_viewport_width", &settings->video_viewport_custom.width, false, 0 /* TODO */, false);
SETTING_UINT("custom_viewport_height", &settings->video_viewport_custom.height, false, 0 /* TODO */, false);
SETTING_UINT("custom_viewport_x", (unsigned*)&settings->video_viewport_custom.x, false, 0 /* TODO */, false);
SETTING_UINT("custom_viewport_y", (unsigned*)&settings->video_viewport_custom.y, false, 0 /* TODO */, false);
SETTING_UINT("content_history_size", &settings->content_history_size, true, default_content_history_size, false);
SETTING_UINT("video_hard_sync_frames", &settings->video.hard_sync_frames, true, hard_sync_frames, false);
SETTING_UINT("video_frame_delay", &settings->video.frame_delay, true, frame_delay, false);
SETTING_UINT("video_max_swapchain_images", &settings->video.max_swapchain_images, true, max_swapchain_images, false);
SETTING_UINT("video_swap_interval", &settings->video.swap_interval, true, swap_interval, false);
SETTING_UINT("video_rotation", &settings->video.rotation, true, ORIENTATION_NORMAL, false);
SETTING_UINT("aspect_ratio_index", &settings->video.aspect_ratio_idx, true, aspect_ratio_idx, false);
#ifdef HAVE_NETWORKING
SETTING_UINT("netplay_ip_port", &settings->netplay.port, true, RARCH_DEFAULT_PORT, false);
SETTING_UINT("netplay_input_latency_frames_min",&settings->netplay.input_latency_frames_min, true, 0, false);
SETTING_UINT("netplay_input_latency_frames_range",&settings->netplay.input_latency_frames_range, true, 0, false);
#endif
#ifdef HAVE_LANGEXTRA
SETTING_UINT("user_language", &settings->user_language, true, RETRO_LANGUAGE_ENGLISH, false);
#endif
SETTING_UINT("bundle_assets_extract_version_current", &settings->bundle_assets_extract_version_current, true, 0, false);
SETTING_UINT("bundle_assets_extract_last_version", &settings->bundle_assets_extract_last_version, true, 0, false);
#ifdef HAVE_WASAPI
SETTING_UINT("audio_wasapi_sh_buffer_length", &settings->audio.wasapi.sh_buffer_length, true, 0, false);
#endif
*size = count;
return tmp;
}
static struct config_int_setting *populate_settings_int(settings_t *settings, int *size)
{
unsigned count = 0;
struct config_int_setting *tmp = NULL;
SETTING_INT("input_bind_timeout", &settings->input.bind_timeout, true, input_bind_timeout, false);
SETTING_INT("input_turbo_period", &settings->input.turbo_period, true, turbo_period, false);
SETTING_INT("input_duty_cycle", &settings->input.turbo_duty_cycle, true, turbo_duty_cycle, false);
SETTING_INT("input_max_users", &settings->input.max_users, true, input_max_users, false);
SETTING_INT("input_menu_toggle_gamepad_combo", &settings->input.menu_toggle_gamepad_combo, true, menu_toggle_gamepad_combo, false);
SETTING_INT("audio_latency", &settings->audio.latency, false, 0 /* TODO */, false);
SETTING_INT("audio_block_frames", &settings->audio.block_frames, true, 0, false);
SETTING_INT("rewind_granularity", &settings->rewind_granularity, true, rewind_granularity, false);
SETTING_INT("autosave_interval", &settings->autosave_interval, true, autosave_interval, false);
SETTING_INT("libretro_log_level", &settings->libretro_log_level, true, libretro_log_level, false);
SETTING_INT("keyboard_gamepad_mapping_type",&settings->input.keyboard_gamepad_mapping_type, true, 1, false);
SETTING_INT("input_poll_type_behavior", &settings->input.poll_type_behavior, true, 2, false);
#ifdef HAVE_MENU
#endif
SETTING_INT("video_monitor_index", &settings->video.monitor_index, true, monitor_index, false);
SETTING_INT("video_fullscreen_x", &settings->video.fullscreen_x, true, fullscreen_x, false);
SETTING_INT("video_fullscreen_y", &settings->video.fullscreen_y, true, fullscreen_y, false);
SETTING_INT("video_window_x", &settings->video.window_x, true, fullscreen_x, false);
SETTING_INT("video_window_y", &settings->video.window_y, true, fullscreen_y, false);
#ifdef HAVE_COMMAND
SETTING_INT("network_cmd_port", &settings->network_cmd_port, true, network_cmd_port, false);
#endif
#ifdef HAVE_NETWORKGAMEPAD
SETTING_INT("network_remote_base_port", &settings->network_remote_base_port, true, network_remote_base_port, false);
#endif
#ifdef GEKKO
SETTING_INT("video_viwidth", &settings->video.viwidth, true, video_viwidth, false);
#endif
#ifdef HAVE_MENU
SETTING_INT("dpi_override_value", &settings->menu.dpi.override_value, true, menu_dpi_override_value, false);
SETTING_INT("menu_thumbnails", &settings->menu.thumbnails, true, menu_thumbnails_default, false);
#ifdef HAVE_XMB
SETTING_INT("xmb_alpha_factor", &settings->menu.xmb.alpha_factor, true, xmb_alpha_factor, false);
SETTING_INT("xmb_scale_factor", &settings->menu.xmb.scale_factor, true, xmb_scale_factor, false);
SETTING_INT("xmb_theme", &settings->menu.xmb.theme, true, xmb_icon_theme, false);
SETTING_INT("xmb_menu_color_theme", &settings->menu.xmb.menu_color_theme, true, xmb_theme, false);
#endif
SETTING_INT("materialui_menu_color_theme", &settings->menu.materialui.menu_color_theme, true, MATERIALUI_THEME_BLUE, false);
#ifdef HAVE_SHADERPIPELINE
SETTING_INT("menu_shader_pipeline", &settings->menu.xmb.shader_pipeline, true, menu_shader_pipeline, false);
#endif
#endif
SETTING_INT("audio_out_rate", &settings->audio.out_rate, true, out_rate, false);
SETTING_INT("custom_viewport_width", &settings->video_viewport_custom.width, false, 0 /* TODO */, false);
SETTING_INT("custom_viewport_height", &settings->video_viewport_custom.height, false, 0 /* TODO */, false);
SETTING_INT("custom_viewport_x", (unsigned*)&settings->video_viewport_custom.x, false, 0 /* TODO */, false);
SETTING_INT("custom_viewport_y", (unsigned*)&settings->video_viewport_custom.y, false, 0 /* TODO */, false);
SETTING_INT("content_history_size", &settings->content_history_size, true, default_content_history_size, false);
SETTING_INT("video_hard_sync_frames", &settings->video.hard_sync_frames, true, hard_sync_frames, false);
SETTING_INT("video_frame_delay", &settings->video.frame_delay, true, frame_delay, false);
SETTING_INT("video_max_swapchain_images", &settings->video.max_swapchain_images, true, max_swapchain_images, false);
SETTING_INT("video_swap_interval", &settings->video.swap_interval, true, swap_interval, false);
SETTING_INT("video_rotation", &settings->video.rotation, true, ORIENTATION_NORMAL, false);
SETTING_INT("aspect_ratio_index", &settings->video.aspect_ratio_idx, true, aspect_ratio_idx, false);
SETTING_INT("state_slot", (unsigned*)&settings->ints.state_slot, false, 0 /* TODO */, false);
SETTING_INT("state_slot", &settings->ints.state_slot, false, 0 /* TODO */, false);
#ifdef HAVE_NETWORKING
SETTING_INT("netplay_ip_port", &settings->netplay.port, true, RARCH_DEFAULT_PORT, false);
SETTING_INT("netplay_check_frames", (unsigned*)&settings->ints.netplay_check_frames, true, netplay_check_frames, false);
SETTING_INT("netplay_input_latency_frames_min",&settings->netplay.input_latency_frames_min, true, 0, false);
SETTING_INT("netplay_input_latency_frames_range",&settings->netplay.input_latency_frames_range, true, 0, false);
#endif
#ifdef HAVE_LANGEXTRA
SETTING_INT("user_language", &settings->user_language, true, RETRO_LANGUAGE_ENGLISH, false);
#endif
SETTING_INT("bundle_assets_extract_version_current", &settings->bundle_assets_extract_version_current, true, 0, false);
SETTING_INT("bundle_assets_extract_last_version", &settings->bundle_assets_extract_last_version, true, 0, false);
#ifdef HAVE_WASAPI
SETTING_INT("audio_wasapi_sh_buffer_length", &settings->audio.wasapi.sh_buffer_length, true, 0, false);
SETTING_INT("netplay_check_frames", &settings->ints.netplay_check_frames, true, netplay_check_frames, false);
#endif
*size = count;
@ -1019,6 +1041,7 @@ static void config_set_defaults(void)
static bool first_initialized = true;
#endif
int int_settings_size = 0;
int uint_settings_size = 0;
settings_t *settings = config_get_ptr();
int bool_settings_size = sizeof(settings->bools) / sizeof(settings->bools.placeholder);
int float_settings_size = sizeof(settings->floats) / sizeof(settings->floats.placeholder);
@ -1036,7 +1059,8 @@ static void config_set_defaults(void)
const char *def_record = config_get_default_record();
struct config_float_setting *float_settings = populate_settings_float (settings, &float_settings_size);
struct config_bool_setting *bool_settings = populate_settings_bool (settings, &bool_settings_size);
struct config_int_setting *int_settings = populate_settings_int (settings, &int_settings_size);
struct config_int_setting *int_settings = populate_settings_int (settings, &int_settings_size);
struct config_uint_setting *uint_settings = populate_settings_uint (settings, &uint_settings_size);
if (bool_settings && (bool_settings_size > 0))
{
@ -1060,6 +1084,17 @@ static void config_set_defaults(void)
free(int_settings);
}
if (uint_settings && (uint_settings_size > 0))
{
for (i = 0; i < (unsigned)uint_settings_size; i++)
{
if (uint_settings[i].def_enable)
*uint_settings[i].ptr = uint_settings[i].def;
}
free(uint_settings);
}
if (float_settings && (float_settings_size > 0))
{
for (i = 0; i < (unsigned)float_settings_size; i++)
@ -1763,6 +1798,7 @@ static bool config_load_file(const char *path, bool set_defaults,
unsigned i;
char tmp_str[PATH_MAX_LENGTH];
int int_settings_size = 0;
int uint_settings_size = 0;
int array_settings_size = 0;
int path_settings_size = 0;
bool ret = false;
@ -1779,6 +1815,7 @@ static bool config_load_file(const char *path, bool set_defaults,
struct config_bool_setting *bool_settings = populate_settings_bool (settings, &bool_settings_size);
struct config_float_setting *float_settings = populate_settings_float (settings, &float_settings_size);
struct config_int_setting *int_settings = populate_settings_int (settings, &int_settings_size);
struct config_int_setting *uint_settings = populate_settings_int (settings, &uint_settings_size);
struct config_array_setting *array_settings = populate_settings_array (settings, &array_settings_size);
struct config_path_setting *path_settings = populate_settings_path (settings, &path_settings_size);
@ -1905,6 +1942,13 @@ static bool config_load_file(const char *path, bool set_defaults,
*int_settings[i].ptr = tmp;
}
for (i = 0; i < (unsigned)uint_settings_size; i++)
{
int tmp = 0;
if (config_get_int(conf, uint_settings[i].ident, &tmp))
*uint_settings[i].ptr = tmp;
}
#ifdef HAVE_NETWORKING
if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_STATELESS_MODE, NULL))
CONFIG_GET_BOOL_BASE(conf, settings, bools.netplay_stateless_mode, "netplay_stateless_mode");
@ -2255,6 +2299,8 @@ end:
free(bool_settings);
if (int_settings)
free(int_settings);
if (uint_settings)
free(uint_settings);
if (float_settings)
free(float_settings);
if (array_settings)
@ -2967,8 +3013,10 @@ bool config_save_file(const char *path)
int int_settings_size = 0;
int array_settings_size = 0;
int path_settings_size = 0;
int uint_settings_size = 0;
struct config_bool_setting *bool_settings = NULL;
struct config_int_setting *int_settings = NULL;
struct config_uint_setting *uint_settings = NULL;
struct config_float_setting *float_settings = NULL;
struct config_array_setting *array_settings = NULL;
struct config_path_setting *path_settings = NULL;
@ -2989,6 +3037,7 @@ bool config_save_file(const char *path)
bool_settings = populate_settings_bool (settings, &bool_settings_size);
int_settings = populate_settings_int (settings, &int_settings_size);
uint_settings = populate_settings_uint (settings, &uint_settings_size);
float_settings = populate_settings_float (settings, &float_settings_size);
array_settings = populate_settings_array (settings, &array_settings_size);
path_settings = populate_settings_path (settings, &path_settings_size);
@ -3047,6 +3096,16 @@ bool config_save_file(const char *path)
free(int_settings);
}
if (uint_settings && (uint_settings_size > 0))
{
for (i = 0; i < (unsigned)uint_settings_size; i++)
config_set_int(conf,
uint_settings[i].ident,
*uint_settings[i].ptr);
free(uint_settings);
}
for (i = 0; i < MAX_USERS; i++)
{
char cfg[64];
@ -3149,6 +3208,7 @@ bool config_save_overrides(int override_type)
int tmp_i = 0;
unsigned i = 0;
int int_settings_size = 0;
int uint_settings_size = 0;
int array_settings_size = 0;
int path_settings_size = 0;
bool ret = false;
@ -3159,7 +3219,9 @@ bool config_save_overrides(int override_type)
struct config_bool_setting *bool_settings = NULL;
struct config_bool_setting *bool_overrides = NULL;
struct config_int_setting *int_settings = NULL;
struct config_uint_setting *uint_settings = NULL;
struct config_int_setting *int_overrides = NULL;
struct config_uint_setting *uint_overrides = NULL;
struct config_float_setting *float_settings = NULL;
struct config_float_setting *float_overrides= NULL;
struct config_array_setting *array_settings = NULL;
@ -3219,6 +3281,10 @@ bool config_save_overrides(int override_type)
tmp_i = 0;
int_overrides = populate_settings_int (overrides, &tmp_i);
uint_settings = populate_settings_uint(settings, &uint_settings_size);
tmp_i = 0;
uint_overrides = populate_settings_uint (overrides, &tmp_i);
float_settings = populate_settings_float(settings, &float_settings_size);
tmp_i = sizeof(settings->floats) / sizeof(settings->floats.placeholder);
float_overrides = populate_settings_float(overrides, &tmp_i);
@ -3259,6 +3325,18 @@ bool config_save_overrides(int override_type)
(*int_overrides[i].ptr));
}
}
for (i = 0; i < (unsigned)uint_settings_size; i++)
{
if ((*uint_settings[i].ptr) != (*uint_overrides[i].ptr))
{
RARCH_LOG(" original: %s=%d\n",
uint_settings[i].ident, (*uint_settings[i].ptr));
RARCH_LOG(" override: %s=%d\n",
uint_overrides[i].ident, (*uint_overrides[i].ptr));
config_set_int(conf, uint_overrides[i].ident,
(*uint_overrides[i].ptr));
}
}
for (i = 0; i < (unsigned)float_settings_size; i++)
{
if ((*float_settings[i].ptr) != (*float_overrides[i].ptr))
@ -3352,6 +3430,8 @@ bool config_save_overrides(int override_type)
free(bool_overrides);
if (int_settings)
free(int_settings);
if (uint_settings)
free(uint_settings);
if (int_overrides)
free(int_overrides);
if (float_settings)