diff --git a/input/dinput.c b/input/dinput.c index 989279df5c..9971f5bd93 100644 --- a/input/dinput.c +++ b/input/dinput.c @@ -598,7 +598,7 @@ static void dinput_joypad_poll(void) { struct dinput_joypad *pad = &g_pads[i]; - if (pad->joypad) + if ((pad->joypad) && (g_xbox_pad_indexes[i] == -1)) { memset(&pad->joy_state, 0, sizeof(pad->joy_state)); diff --git a/input/winxinput_joypad.c b/input/winxinput_joypad.c index 48b8e8dceb..0083b17baa 100644 --- a/input/winxinput_joypad.c +++ b/input/winxinput_joypad.c @@ -347,8 +347,9 @@ static int16_t winxinput_joypad_axis (unsigned port_num, uint32_t joyaxis) static void winxinput_joypad_poll(void) { for (unsigned i = 0; i < 4; ++i) - if (g_XInputGetStateEx(i, &(g_winxinput_states[i].xstate)) == ERROR_DEVICE_NOT_CONNECTED) - g_winxinput_states[i].connected = false; + if (g_winxinput_states[i].connected) + if (g_XInputGetStateEx(i, &(g_winxinput_states[i].xstate)) != ERROR_SUCCESS) + g_winxinput_states[i].connected = false; dinput_joypad.poll(); }