haptics: Enumerate XInput/DInput joysticks after haptic init
Since the haptic subsystem is usually initialized after the joystick subsystem, the initial calls to HapticMaybeAddDevice() from inside SDL_JoystickInit() will arrive too early to be handled by the haptic subsystem. We need to add those haptic devices for those already present joysticks ourselves.main
parent
6f9909b609
commit
6b64c47b69
|
@ -52,12 +52,28 @@ static int numhaptics = 0;
|
|||
int
|
||||
SDL_SYS_HapticInit(void)
|
||||
{
|
||||
JoyStick_DeviceData* device;
|
||||
|
||||
if (SDL_DINPUT_HapticInit() < 0) {
|
||||
return -1;
|
||||
}
|
||||
if (SDL_XINPUT_HapticInit() < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* The joystick subsystem will usually be initialized before haptics,
|
||||
* so the initial HapticMaybeAddDevice() calls from the joystick
|
||||
* subsystem will arrive too early to create haptic devices. We will
|
||||
* invoke those callbacks again here to pick up any joysticks that
|
||||
* were added prior to haptics initialization. */
|
||||
for (device = SYS_Joystick; device; device = device->pNext) {
|
||||
if (device->bXInputDevice) {
|
||||
SDL_XINPUT_HapticMaybeAddDevice(device->XInputUserId);
|
||||
} else {
|
||||
SDL_DINPUT_HapticMaybeAddDevice(&device->dxdevice);
|
||||
}
|
||||
}
|
||||
|
||||
return numhaptics;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue