update SDL3 from 3.2.20 to 3.4.2
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
@@ -416,11 +416,15 @@ void WINDOWS_JoystickDetect(void)
|
||||
while (pCurList) {
|
||||
JoyStick_DeviceData *pListNext = NULL;
|
||||
|
||||
if (!pCurList->bXInputDevice) {
|
||||
#ifdef SDL_HAPTIC_DINPUT
|
||||
#ifdef SDL_JOYSTICK_XINPUT
|
||||
if (!pCurList->bXInputDevice) {
|
||||
SDL_DINPUT_HapticMaybeRemoveDevice(&pCurList->dxdevice);
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
SDL_DINPUT_HapticMaybeRemoveDevice(&pCurList->dxdevice);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
SDL_PrivateJoystickRemoved(pCurList->nInstanceID);
|
||||
|
||||
@@ -432,11 +436,15 @@ void WINDOWS_JoystickDetect(void)
|
||||
|
||||
for (pCurList = SYS_Joystick; pCurList; pCurList = pCurList->pNext) {
|
||||
if (pCurList->send_add_event) {
|
||||
if (!pCurList->bXInputDevice) {
|
||||
#ifdef SDL_HAPTIC_DINPUT
|
||||
#ifdef SDL_JOYSTICK_XINPUT
|
||||
if (!pCurList->bXInputDevice) {
|
||||
SDL_DINPUT_HapticMaybeAddDevice(&pCurList->dxdevice);
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
SDL_DINPUT_HapticMaybeAddDevice(&pCurList->dxdevice);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
SDL_PrivateJoystickAdded(pCurList->nInstanceID);
|
||||
|
||||
@@ -489,16 +497,18 @@ static int WINDOWS_JoystickGetDeviceSteamVirtualGamepadSlot(int device_index)
|
||||
device = device->pNext;
|
||||
}
|
||||
|
||||
#ifdef SDL_JOYSTICK_XINPUT
|
||||
if (device->bXInputDevice) {
|
||||
// The slot for XInput devices can change as controllers are seated
|
||||
return SDL_XINPUT_GetSteamVirtualGamepadSlot(device->XInputUserId);
|
||||
} else {
|
||||
return device->steam_virtual_gamepad_slot;
|
||||
}
|
||||
#endif
|
||||
return device->steam_virtual_gamepad_slot;
|
||||
}
|
||||
|
||||
static int WINDOWS_JoystickGetDevicePlayerIndex(int device_index)
|
||||
{
|
||||
#ifdef SDL_JOYSTICK_XINPUT
|
||||
JoyStick_DeviceData *device = SYS_Joystick;
|
||||
int index;
|
||||
|
||||
@@ -507,6 +517,9 @@ static int WINDOWS_JoystickGetDevicePlayerIndex(int device_index)
|
||||
}
|
||||
|
||||
return device->bXInputDevice ? (int)device->XInputUserId : -1;
|
||||
#else
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void WINDOWS_JoystickSetDevicePlayerIndex(int device_index, int player_index)
|
||||
@@ -560,20 +573,22 @@ static bool WINDOWS_JoystickOpen(SDL_Joystick *joystick, int device_index)
|
||||
}
|
||||
joystick->hwdata->guid = device->guid;
|
||||
|
||||
#ifdef SDL_JOYSTICK_XINPUT
|
||||
if (device->bXInputDevice) {
|
||||
return SDL_XINPUT_JoystickOpen(joystick, device);
|
||||
} else {
|
||||
return SDL_DINPUT_JoystickOpen(joystick, device);
|
||||
}
|
||||
#endif
|
||||
return SDL_DINPUT_JoystickOpen(joystick, device);
|
||||
}
|
||||
|
||||
static bool WINDOWS_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble)
|
||||
{
|
||||
#ifdef SDL_JOYSTICK_XINPUT
|
||||
if (joystick->hwdata->bXInputDevice) {
|
||||
return SDL_XINPUT_JoystickRumble(joystick, low_frequency_rumble, high_frequency_rumble);
|
||||
} else {
|
||||
return SDL_DINPUT_JoystickRumble(joystick, low_frequency_rumble, high_frequency_rumble);
|
||||
}
|
||||
#endif
|
||||
return SDL_DINPUT_JoystickRumble(joystick, low_frequency_rumble, high_frequency_rumble);
|
||||
}
|
||||
|
||||
static bool WINDOWS_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble)
|
||||
@@ -602,21 +617,27 @@ static void WINDOWS_JoystickUpdate(SDL_Joystick *joystick)
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef SDL_JOYSTICK_XINPUT
|
||||
if (joystick->hwdata->bXInputDevice) {
|
||||
SDL_XINPUT_JoystickUpdate(joystick);
|
||||
} else {
|
||||
SDL_DINPUT_JoystickUpdate(joystick);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
SDL_DINPUT_JoystickUpdate(joystick);
|
||||
}
|
||||
|
||||
// Function to close a joystick after use
|
||||
static void WINDOWS_JoystickClose(SDL_Joystick *joystick)
|
||||
{
|
||||
#ifdef SDL_JOYSTICK_XINPUT
|
||||
if (joystick->hwdata->bXInputDevice) {
|
||||
SDL_XINPUT_JoystickClose(joystick);
|
||||
} else {
|
||||
SDL_DINPUT_JoystickClose(joystick);
|
||||
}
|
||||
#else
|
||||
SDL_DINPUT_JoystickClose(joystick);
|
||||
#endif
|
||||
|
||||
SDL_free(joystick->hwdata);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user