diff --git a/configuration.c b/configuration.c index 4638d983c7..ee1a5eb07f 100644 --- a/configuration.c +++ b/configuration.c @@ -2357,7 +2357,8 @@ void config_set_defaults(void *data) input_config_reset(); #ifdef HAVE_CONFIGFILE - input_remapping_set_defaults(true); + input_remapping_deinit(); + input_remapping_set_defaults(); #endif /* Verify that binds are in proper order. */ @@ -3771,7 +3772,7 @@ bool config_load_remap(const char *directory_input_remapping, sizeof(game_path)); #ifdef HAVE_CONFIGFILE - input_remapping_set_defaults(false); + input_remapping_set_defaults(); #endif /* If a game remap file exists, load it. */ @@ -4533,7 +4534,10 @@ bool input_remapping_load_file(void *data, const char *path) return false; if (!string_is_empty(global->name.remapfile)) - input_remapping_set_defaults(true); + { + input_remapping_deinit(); + input_remapping_set_defaults(); + } global->name.remapfile = strdup(path); for (i = 0; i < MAX_USERS; i++) @@ -4740,54 +4744,6 @@ bool input_remapping_remove_file(const char *path, return filestream_delete(remap_file) == 0 ? true : false; } - -void input_remapping_set_defaults(bool deinit) -{ - unsigned i, j; - settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); - - if (!global) - return; - - if (deinit) - { - if (!string_is_empty(global->name.remapfile)) - free(global->name.remapfile); - global->name.remapfile = NULL; - rarch_ctl(RARCH_CTL_UNSET_REMAPS_CORE_ACTIVE, NULL); - rarch_ctl(RARCH_CTL_UNSET_REMAPS_CONTENT_DIR_ACTIVE, NULL); - rarch_ctl(RARCH_CTL_UNSET_REMAPS_GAME_ACTIVE, NULL); - } - - for (i = 0; i < MAX_USERS; i++) - { - for (j = 0; j < RARCH_FIRST_CUSTOM_BIND + 8; j++) - { - if (j < RARCH_FIRST_CUSTOM_BIND) - { - const struct retro_keybind *keybind = &input_config_binds[i][j]; - if (keybind) - configuration_set_uint(settings, - settings->uints.input_remap_ids[i][j], keybind->id); - configuration_set_uint(settings, - settings->uints.input_keymapper_ids[i][j], RETROK_UNKNOWN); - } - else - configuration_set_uint(settings, - settings->uints.input_remap_ids[i][j], j); - } - - if (global->old_analog_dpad_mode[i]) - configuration_set_uint(settings, - settings->uints.input_analog_dpad_mode[i], - global->old_analog_dpad_mode[i]); - if (global->old_libretro_device[i]) - configuration_set_uint(settings, - settings->uints.input_libretro_device[i], - global->old_libretro_device[i]); - } -} #endif #if !defined(HAVE_DYNAMIC) diff --git a/input/input_remapping.h b/input/input_remapping.h index 5a044edee7..668445328b 100644 --- a/input/input_remapping.h +++ b/input/input_remapping.h @@ -48,7 +48,9 @@ bool input_remapping_save_file(const char *path); bool input_remapping_remove_file(const char *path, const char *dir_input_remapping); -void input_remapping_set_defaults(bool deinit); +void input_remapping_deinit(void); + +void input_remapping_set_defaults(void); RETRO_END_DECLS diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 2de5aa02c0..9664b4e24b 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -3411,22 +3411,22 @@ static int generic_action_ok_remap_file_operation(const char *path, case ACTION_OK_REMAP_FILE_REMOVE_CORE: if (rarch_ctl(RARCH_CTL_IS_REMAPS_CORE_ACTIVE, NULL)) { - rarch_ctl(RARCH_CTL_UNSET_REMAPS_CORE_ACTIVE, NULL); - input_remapping_set_defaults(true); + input_remapping_deinit(); + input_remapping_set_defaults(); } break; case ACTION_OK_REMAP_FILE_REMOVE_GAME: if (rarch_ctl(RARCH_CTL_IS_REMAPS_GAME_ACTIVE, NULL)) { - rarch_ctl(RARCH_CTL_UNSET_REMAPS_GAME_ACTIVE, NULL); - input_remapping_set_defaults(true); + input_remapping_deinit(); + input_remapping_set_defaults(); } break; case ACTION_OK_REMAP_FILE_REMOVE_CONTENT_DIR: if (rarch_ctl(RARCH_CTL_IS_REMAPS_CONTENT_DIR_ACTIVE, NULL)) { - rarch_ctl(RARCH_CTL_UNSET_REMAPS_CONTENT_DIR_ACTIVE, NULL); - input_remapping_set_defaults(true); + input_remapping_deinit(); + input_remapping_set_defaults(); } break; } diff --git a/menu/cbs/menu_cbs_start.c b/menu/cbs/menu_cbs_start.c index 6ff67d7d09..567e4b3a20 100644 --- a/menu/cbs/menu_cbs_start.c +++ b/menu/cbs/menu_cbs_start.c @@ -81,7 +81,8 @@ static int action_start_remap_file_load( unsigned type, size_t idx, size_t entry_idx) { #ifdef HAVE_CONFIGFILE - input_remapping_set_defaults(true); + input_remapping_deinit(); + input_remapping_set_defaults(); #endif return 0; } diff --git a/retroarch.c b/retroarch.c index 090ffa6985..4dfdb9f771 100644 --- a/retroarch.c +++ b/retroarch.c @@ -12063,6 +12063,46 @@ static void command_event_disable_overrides(struct rarch_state *p_rarch) config_unload_override(); p_rarch->runloop_overrides_active = false; } + +void input_remapping_set_defaults(void) +{ + unsigned i, j; + struct rarch_state *p_rarch = &rarch_st; + settings_t *settings = p_rarch->configuration_settings; + global_t *global = &p_rarch->g_extern; + + for (i = 0; i < MAX_USERS; i++) + { + for (j = 0; j < RARCH_FIRST_CUSTOM_BIND; j++) + { + const struct retro_keybind *keybind = &input_config_binds[i][j]; + if (keybind) + configuration_set_uint(settings, + settings->uints.input_remap_ids[i][j], keybind->id); + configuration_set_uint(settings, + settings->uints.input_keymapper_ids[i][j], RETROK_UNKNOWN); + } + + for (j = RARCH_FIRST_CUSTOM_BIND; j < (RARCH_FIRST_CUSTOM_BIND + 8); j++) + configuration_set_uint(settings, + settings->uints.input_remap_ids[i][j], j); + } + + if (global) + { + for (i = 0; i < MAX_USERS; i++) + { + if (global->old_analog_dpad_mode[i]) + configuration_set_uint(settings, + settings->uints.input_analog_dpad_mode[i], + global->old_analog_dpad_mode[i]); + if (global->old_libretro_device[i]) + configuration_set_uint(settings, + settings->uints.input_libretro_device[i], + global->old_libretro_device[i]); + } + } +} #endif static void command_event_deinit_core( @@ -12099,7 +12139,10 @@ static void command_event_deinit_core( || p_rarch->runloop_remaps_content_dir_active || p_rarch->runloop_remaps_game_active ) - input_remapping_set_defaults(true); + { + input_remapping_deinit(); + input_remapping_set_defaults(); + } #endif } @@ -13015,6 +13058,18 @@ static bool command_event_resize_windowed_scale(struct rarch_state *p_rarch) return true; } +void input_remapping_deinit(void) +{ + struct rarch_state *p_rarch = &rarch_st; + global_t *global = &p_rarch->g_extern; + if (!string_is_empty(global->name.remapfile)) + free(global->name.remapfile); + global->name.remapfile = NULL; + p_rarch->runloop_remaps_core_active = false; + p_rarch->runloop_remaps_content_dir_active = false; + p_rarch->runloop_remaps_game_active = false; +} + static bool input_driver_grab_mouse(struct rarch_state *p_rarch) { if (!p_rarch->current_input || !p_rarch->current_input->grab_mouse) @@ -13592,7 +13647,10 @@ bool command_event(enum event_command cmd, void *data) || p_rarch->runloop_remaps_content_dir_active || p_rarch->runloop_remaps_game_active ) - input_remapping_set_defaults(true); + { + input_remapping_deinit(); + input_remapping_set_defaults(); + } #endif if (is_inited) @@ -35984,25 +36042,16 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data) case RARCH_CTL_SET_REMAPS_CORE_ACTIVE: p_rarch->runloop_remaps_core_active = true; break; - case RARCH_CTL_UNSET_REMAPS_CORE_ACTIVE: - p_rarch->runloop_remaps_core_active = false; - break; case RARCH_CTL_IS_REMAPS_CORE_ACTIVE: return p_rarch->runloop_remaps_core_active; case RARCH_CTL_SET_REMAPS_GAME_ACTIVE: p_rarch->runloop_remaps_game_active = true; break; - case RARCH_CTL_UNSET_REMAPS_GAME_ACTIVE: - p_rarch->runloop_remaps_game_active = false; - break; case RARCH_CTL_IS_REMAPS_GAME_ACTIVE: return p_rarch->runloop_remaps_game_active; case RARCH_CTL_SET_REMAPS_CONTENT_DIR_ACTIVE: p_rarch->runloop_remaps_content_dir_active = true; break; - case RARCH_CTL_UNSET_REMAPS_CONTENT_DIR_ACTIVE: - p_rarch->runloop_remaps_content_dir_active = false; - break; case RARCH_CTL_IS_REMAPS_CONTENT_DIR_ACTIVE: return p_rarch->runloop_remaps_content_dir_active; #endif @@ -36623,7 +36672,10 @@ bool retroarch_main_quit(void) || p_rarch->runloop_remaps_content_dir_active || p_rarch->runloop_remaps_game_active ) - input_remapping_set_defaults(true); + { + input_remapping_deinit(); + input_remapping_set_defaults(); + } #endif } diff --git a/retroarch.h b/retroarch.h index 03e087cc6d..5628c0d0ad 100644 --- a/retroarch.h +++ b/retroarch.h @@ -123,15 +123,12 @@ enum rarch_ctl_state RARCH_CTL_IS_REMAPS_CORE_ACTIVE, RARCH_CTL_SET_REMAPS_CORE_ACTIVE, - RARCH_CTL_UNSET_REMAPS_CORE_ACTIVE, RARCH_CTL_IS_REMAPS_CONTENT_DIR_ACTIVE, RARCH_CTL_SET_REMAPS_CONTENT_DIR_ACTIVE, - RARCH_CTL_UNSET_REMAPS_CONTENT_DIR_ACTIVE, RARCH_CTL_IS_REMAPS_GAME_ACTIVE, RARCH_CTL_SET_REMAPS_GAME_ACTIVE, - RARCH_CTL_UNSET_REMAPS_GAME_ACTIVE, #endif RARCH_CTL_IS_MISSING_BIOS,