From 7ec31f188de0faa51424b395a26020b5943179c7 Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 20 Nov 2016 11:47:50 -0500 Subject: [PATCH 1/4] allow saving input related stuff to overrides --- configuration.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/configuration.c b/configuration.c index 009d6e2cf1..441e961512 100644 --- a/configuration.c +++ b/configuration.c @@ -3200,6 +3200,33 @@ bool config_save_overrides(int override_type) } } + for (i = 0; i < MAX_USERS; i++) + { + char cfg[64]; + + cfg[0] = '\0'; + if (settings->input.device[i] != overrides->input.device[i]) + { + snprintf(cfg, sizeof(cfg), "input_device_p%u", i + 1); + config_set_int(conf, cfg, overrides->input.device[i]); + } + if (settings->input.joypad_map[i] != overrides->input.joypad_map[i]) + { + snprintf(cfg, sizeof(cfg), "input_player%u_joypad_index", i + 1); + config_set_int(conf, cfg, overrides->input.joypad_map[i]); + } + if (settings->input.libretro_device[i] != overrides->input.libretro_device[i]) + { + snprintf(cfg, sizeof(cfg), "input_libretro_device_p%u", i + 1); + config_set_int(conf, cfg, overrides->input.libretro_device[i]); + } + if (settings->input.analog_dpad_mode[i] != overrides->input.analog_dpad_mode[i]) + { + snprintf(cfg, sizeof(cfg), "input_player%u_analog_dpad_mode", i + 1); + config_set_int(conf, cfg, overrides->input.analog_dpad_mode[i]); + } + } + ret = false; switch (override_type) From 281aa1df72e5585f3823aa5b9a537fea2ce1a01a Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 20 Nov 2016 12:50:54 -0500 Subject: [PATCH 2/4] this is redundant now, remap files should only be used for.. remaps --- input/input_remapping.c | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/input/input_remapping.c b/input/input_remapping.c index b6ba75bc4b..ad4aa9735f 100644 --- a/input/input_remapping.c +++ b/input/input_remapping.c @@ -82,18 +82,6 @@ bool input_remapping_load_file(void *data, const char *path) settings->input.remap_ids[i][RARCH_FIRST_CUSTOM_BIND + j] = key_remap; } - - snprintf(buf, sizeof(buf), "input_player%u_joypad_index", i + 1); - CONFIG_GET_INT_BASE(conf, settings, input.joypad_map[i], buf); - - snprintf(buf, sizeof(buf), "input_player%u_analog_dpad_mode", i + 1); - CONFIG_GET_INT_BASE(conf, settings, input.analog_dpad_mode[i], buf); - - if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_LIBRETRO_DEVICE, &i)) - { - snprintf(buf, sizeof(buf), "input_libretro_device_p%u", i + 1); - CONFIG_GET_INT_BASE(conf, settings, input.libretro_device[i], buf); - } } config_file_free(conf); @@ -165,12 +153,6 @@ bool input_remapping_save_file(const char *path) config_unset(conf,key_ident[j]); } } - - - snprintf(buf, sizeof(buf), "input_libretro_device_p%u", i + 1); - config_set_int(conf, buf, settings->input.libretro_device[i]); - snprintf(buf, sizeof(buf), "input_player%u_analog_dpad_mode", i + 1); - config_set_int(conf, buf, settings->input.analog_dpad_mode[i]); } ret = config_file_write(conf, remap_file); From 2835a2292c352edc26f65d168b4a5cd47be51d78 Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 20 Nov 2016 13:31:11 -0500 Subject: [PATCH 3/4] include SLANGP extension --- configuration.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.c b/configuration.c index 441e961512..b9775e1abf 100644 --- a/configuration.c +++ b/configuration.c @@ -2539,7 +2539,7 @@ bool config_load_shader_preset(void) return true; } - for(idx = FILE_PATH_CGP_EXTENSION; idx < FILE_PATH_SLANGP_EXTENSION; idx++) + for(idx = FILE_PATH_CGP_EXTENSION; idx <= FILE_PATH_SLANGP_EXTENSION; idx++) { config_file_t *new_conf = NULL; From 0d5af3be3625c91c82698558ec46eb9536ca5d71 Mon Sep 17 00:00:00 2001 From: radius Date: Sun, 20 Nov 2016 13:58:12 -0500 Subject: [PATCH 4/4] clear incompatible shaders at config_load --- configuration.c | 59 ++++++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/configuration.c b/configuration.c index b9775e1abf..4695bc8a2a 100644 --- a/configuration.c +++ b/configuration.c @@ -1627,6 +1627,28 @@ static void config_read_keybinds_conf(config_file_t *conf) read_keybinds_user(conf, i); } +static bool check_shader_compatibility(enum file_path_enum enum_idx) +{ + settings_t *settings = config_get_ptr(); + + if (string_is_equal("vulkan", settings->video.driver)) + { + if (enum_idx != FILE_PATH_SLANGP_EXTENSION) + return false; + return true; + } + + if (string_is_equal("gl", settings->video.driver) || + string_is_equal("d3d9", settings->video.driver)) + { + if (enum_idx == FILE_PATH_SLANGP_EXTENSION) + return false; + return true; + } + + return false; +} + #if 0 static bool config_read_keybinds(const char *path) { @@ -2150,6 +2172,19 @@ static bool config_load_file(const char *path, bool set_defaults, config_read_keybinds_conf(conf); ret = true; + + for(i = FILE_PATH_CGP_EXTENSION; i <= FILE_PATH_SLANGP_EXTENSION; i++) + { + if(strstr(file_path_str((enum file_path_enum)(i)), path_get_extension(settings->path.shader))) + { + if (!check_shader_compatibility(i)) + { + RARCH_LOG("Incompatible shader for backend %s, clearing...\n", settings->video.driver); + settings->path.shader[0] = '\0'; + break; + } + } + } end: if (conf) @@ -2434,28 +2469,6 @@ bool config_load_remap(void) return false; } -static bool check_shader_compatibility(enum file_path_enum enum_idx) -{ - settings_t *settings = config_get_ptr(); - - if (string_is_equal("vulkan", settings->video.driver)) - { - if (enum_idx != FILE_PATH_SLANGP_EXTENSION) - return false; - return true; - } - - if (string_is_equal("gl", settings->video.driver) || - string_is_equal("d3d9", settings->video.driver)) - { - if (enum_idx == FILE_PATH_SLANGP_EXTENSION) - return false; - return true; - } - - return false; -} - /** * config_load_shader_preset: * @@ -2502,7 +2515,7 @@ bool config_load_shader_preset(void) RARCH_LOG("Shaders: preset directory: %s\n", shader_directory); - for(idx = FILE_PATH_CGP_EXTENSION; idx < FILE_PATH_SLANGP_EXTENSION; idx++) + for(idx = FILE_PATH_CGP_EXTENSION; idx <= FILE_PATH_SLANGP_EXTENSION; idx++) { config_file_t *new_conf = NULL;