diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 759342f9ab..e4d972bf33 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -478,7 +478,7 @@ bool menu_iterate(void *data) static bool initial_held = true; static bool first_held = false; uint64_t input_state; - int32_t input_entry_ret, ret; + int32_t input_entry_ret, ret, i; rgui_handle_t *rgui; input_state = 0; @@ -496,6 +496,13 @@ bool menu_iterate(void *data) rgui->old_input_state |= 1ULL << RARCH_MENU_TOGGLE; } + // Update binds for analog dpad modes. + for (i = 0; i < MAX_PLAYERS; i++) + { + input_push_analog_dpad(g_settings.input.binds[i], g_settings.input.analog_dpad_mode[i]); + input_push_analog_dpad(g_settings.input.autoconf_binds[i], g_settings.input.analog_dpad_mode[i]); + } + rarch_input_poll(); rarch_check_block_hotkey(); #ifdef HAVE_OVERLAY @@ -600,6 +607,12 @@ bool menu_iterate(void *data) } } + for (i = 0; i < MAX_PLAYERS; i++) + { + input_pop_analog_dpad(g_settings.input.binds[i]); + input_pop_analog_dpad(g_settings.input.autoconf_binds[i]); + } + if (ret || input_entry_ret) return false;