mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-10-03 08:28:29 +00:00
Poll for the initial controller state when using DirectInput
This fixes getting a deflected axis as the first buffered input reading on a generic USB controller (G-Shark GS-GP702)
This commit is contained in:
@@ -849,6 +849,7 @@ int SDL_DINPUT_JoystickOpen(SDL_Joystick *joystick, JoyStick_DeviceData *joystic
|
||||
} else if (FAILED(result)) {
|
||||
return SetDIerror("IDirectInputDevice8::SetProperty", result);
|
||||
}
|
||||
joystick->hwdata->first_update = SDL_TRUE;
|
||||
|
||||
/* Poll and wait for initial device state to be populated */
|
||||
result = IDirectInputDevice8_Poll(joystick->hwdata->InputDevice);
|
||||
@@ -1115,6 +1116,13 @@ void SDL_DINPUT_JoystickUpdate(SDL_Joystick *joystick)
|
||||
IDirectInputDevice8_Poll(joystick->hwdata->InputDevice);
|
||||
}
|
||||
|
||||
if (joystick->hwdata->first_update) {
|
||||
/* Poll to get the initial state of the joystick */
|
||||
UpdateDINPUTJoystickState_Polled(joystick);
|
||||
joystick->hwdata->first_update = SDL_FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
if (joystick->hwdata->buffered ) {
|
||||
UpdateDINPUTJoystickState_Buffered(joystick);
|
||||
} else {
|
||||
|
@@ -76,6 +76,7 @@ struct joystick_hwdata
|
||||
LPDIRECTINPUTDEVICE8 InputDevice;
|
||||
DIDEVCAPS Capabilities;
|
||||
SDL_bool buffered;
|
||||
SDL_bool first_update;
|
||||
input_t Inputs[MAX_INPUTS];
|
||||
int NumInputs;
|
||||
int NumSliders;
|
||||
|
Reference in New Issue
Block a user