|
f317d619
|
2022-07-01T13:59:14
|
|
Xbox GDKX support (#5869)
* Xbox GDK support (14 squashed commits)
* Added basic keyboard testing
* Update readme
* Code review fixes
* Fixed issue where controller add/removal wasn't working (since the device notification events don't work on Xbox, have to use the joystick thread to poll XInput)
|
|
6a2e6c82
|
2022-06-28T21:03:16
|
|
Add SDL_HINT_DIRECTINPUT_ENABLED (on by default)
|
|
16f55fbd
|
2022-06-15T20:44:43
|
|
Separate the controller protocol from the controller style
This allows us to handle controllers that use the Xbox protocol but look like Nintendo Switch or Playstation controllers, like the Qanba Dragon Arcade Stick in PC mode
|
|
714502d3
|
2022-06-13T22:15:56
|
|
minor windows warning fixes.
|
|
d2c4d74d
|
2022-05-27T15:49:35
|
|
Fixed build with MinGW-64 windows.devices.power.h
The MinGW-64 header defines the parameters as ABI::Windows::Foundation::IReference<INT32 > **, but the Windows header defines the parameters as __FIReference_1_int**
|
|
bd22ca76
|
2022-05-27T15:40:50
|
|
Revert "Workaround for compiling with MinGW-w64"
This reverts commit efdf43aa9b4f4d623ffba01f503d9793d5021330.
The broken mingw headers aren't in an official release yet, so reporting this upstream.
|
|
efdf43aa
|
2022-05-27T15:34:45
|
|
Workaround for compiling with MinGW-w64
Fixes bug https://github.com/libsdl-org/SDL/issues/5589
|
|
b28d304b
|
2022-05-24T17:24:03
|
|
Only include controller_type.h in SDL_joystick.c
It has a huge array of controllers and we only want it instantiated once
|
|
0cca71a8
|
2022-05-18T22:12:05
|
|
Use SDLCALL for callbacks in public APIs
|
|
3f813cf1
|
2022-05-04T10:05:56
|
|
SDL_rawinputjoystick.c: fixed -Werror=declaration-after-statement
|
|
bb0b6dd4
|
2022-05-02T20:12:13
|
|
Fixed using WGI without XInput
|
|
e551384a
|
2022-04-26T14:54:14
|
|
Added functions to get the platform dependent name for a joystick or game controller
|
|
c39df2fb
|
2021-12-22T18:27:10
|
|
joystick: get HID top-level collection preparsed data directly from RawInput API.
|
|
0b2a55ea
|
2022-02-02T14:58:33
|
|
Fix typo
|
|
0964c84d
|
2022-02-02T11:21:32
|
|
Always use SDL_PrivateJoystickBatteryLevel to update battery level
But do not use it for initialisation.
|
|
04bf7c94
|
2022-04-22T09:36:39
|
|
Fixed build
|
|
d9b5805b
|
2022-04-22T09:12:48
|
|
Return a correlation error when trigger rumble is attempted without correlation
|
|
145824f6
|
2022-04-21T01:38:53
|
|
WGI: Only call RoUninitialize() if RoInitialize() succeeded
|
|
00b2e10a
|
2022-04-20T20:58:29
|
|
WGI: Keep a reference to the MTA to avoid crashing on COM teardown
Fixes #5552
Fixes #5270
|
|
312c899f
|
2022-04-02T03:32:10
|
|
attempt to fix uwp build
|
|
8ebef12d
|
2022-04-01T14:58:33
|
|
Use RoInitialize/RoUninitialize for Windows.Gaming.Input
Thanks @walbourn!
Fixes https://github.com/libsdl-org/SDL/issues/5270
|
|
006aafab
|
2022-03-22T20:23:09
|
|
Fixed freeing a constant string (thanks @gnrlwart)
|
|
1868c5b5
|
2022-03-17T18:25:50
|
|
Start rumbling once a raw input controller has been correlated
Fixes https://github.com/libsdl-org/SDL/issues/5351
|
|
b22ce2b5
|
2022-03-17T17:10:40
|
|
Workaround for bug in Microsoft WGI support
Fixes https://github.com/libsdl-org/SDL/issues/5270
|
|
677dc101
|
2022-03-09T19:43:29
|
|
rawinput: Fix double detection of gamepads on some 3rd party X360 wireless receivers
The name that the Raw Input joystick driver pulls from the HID stack comes
from USB string descriptors contained on the device. For official wireless
receivers, this always contains "Xbox 360 Wireless Receiver for Windows"
which matches the friendly name that WGI provides.
3rd party Xbox 360 wireless receivers may have different strings in their
USB string descriptors (one uses "XBOX 360 For Windows" instead). This
fails to match WGI's name and causes Raw Input and WGI to both report the
same gamepad.
Since wireless Xbox 360 controllers seem to have a consistent VID/PID
regardless of the adapter enumerating them, we can also match on that to
catch these.
The duplicate case reported to me was:
Controller (XBOX 360 For Windows) - 030000005e040000a102000000007200
Xbox 360 Wireless Receiver for Windows - 030000005e0400000000000000007701
|
|
9299a3e7
|
2022-02-21T16:24:45
|
|
Workaround for crash in CoUninitialize()
|
|
f97a29f6
|
2022-02-11T22:10:33
|
|
Use the real device VID/PID when seeing the Steam virtual controller
|
|
d7110b44
|
2022-01-08T12:07:16
|
|
fix compiler warnings in SDL_windows_gaming_input.c
|
|
43f0271b
|
2022-01-24T08:56:33
|
|
Revert "fix compiler warnings in SDL_windows_gaming_input.c"
This reverts commit ca36cdb185f2f26241598068927821896f36b904.
The older Windows SDK's headers are wrong, and this change would crash if
you hotplug a device.
|
|
67cb548b
|
2022-01-20T19:31:54
|
|
Fixed build error with C90 compilers
|
|
a23b3c76
|
2022-01-20T17:21:28
|
|
Add support for correlating trigger input
|
|
d73bd0d2
|
2022-01-03T21:39:30
|
|
dinput: Don't crash in SDL_DINPUT_JoystickPresent if DInput init failed
The WGI driver will call this regardless of whether our init succeeded.
|
|
120c76c8
|
2022-01-03T09:40:00
|
|
Updated copyright for 2022
|
|
dd2f9111
|
2021-11-27T20:18:29
|
|
Fixed warnings with Windows SDK 10.0.19041
Fixes https://github.com/libsdl-org/SDL/issues/4998
Also breaks https://github.com/libsdl-org/SDL/issues/4998 for older SDKs, but we're going to ignore them, they're just incorrect.
|
|
c2904c8c
|
2021-11-27T11:16:15
|
|
Fixed compile warnings and errors
Fixes https://github.com/libsdl-org/SDL/issues/4998
|
|
09b7ca27
|
2021-11-27T10:53:20
|
|
Get the current WGI controller list at startup
On Win32 this list is empty and we always get controller added events. On UWP, this list is populated and we don't get controlle added events for currently connected controllers.
|
|
12895eca
|
2021-11-27T10:52:58
|
|
Fixed WGI initialization on Win32
|
|
110e4e13
|
2021-11-27T10:24:32
|
|
Use WGI instead of XInput for Windows 10 UWP apps
Fixes https://github.com/libsdl-org/SDL/issues/5017
|
|
02021ae7
|
2021-11-27T13:17:04
|
|
Return capabitlities from RawInput joystick
|
|
67b5de5b
|
2021-11-26T10:18:08
|
|
Fixed build warnings
|
|
2ca2ad76
|
2021-11-26T10:13:45
|
|
Fixed build warnings
|
|
f8900583
|
2021-11-23T17:04:40
|
|
removed windows winmm joystick driver
|
|
6fb50bd0
|
2021-11-22T11:16:23
|
|
Don't use "exp" as a name so that it's doesn´t show up with searching for the function
|
|
881a6749
|
2021-11-18T19:58:04
|
|
rawinput: Only access SDL_RAWINPUT_mutex if initialized
We can also ditch the lock in RAWINPUT_JoystickQuit() now that the joystick
subsystem quits drivers in reverse order. There's no chance of a racing call
to RAWINPUT_WindowProc() anymore.
|
|
3eb9bfac
|
2021-11-14T22:22:50
|
|
win32 rawinput & wgi joystick: avoid -Werror=declaration-after-statement
|
|
c2dd50a9
|
2021-11-12T08:28:02
|
|
Fixed whitespace
|
|
50971577
|
2021-11-11T22:35:41
|
|
dinput: Fix memory leak when SDL_DINPUT_JoystickPresent() returns true
|
|
afccabb8
|
2021-11-11T12:12:05
|
|
joystick: Add capability flags for rumble and trigger rumble
When API limitations force us to guess, we favor a false positive (reporting
support when it doesn't exist) compared to a false negative.
|
|
1ccfbf96
|
2021-11-11T11:13:08
|
|
joystick: Convert HasLED() into a generic GetCapabilities() function
|
|
f6dc47ca
|
2021-11-07T16:00:47
|
|
WGI/DInput: Fix SDL_IsXInputDevice() checks when RawInput is enabled
Enabling the RawInput backend causes SDL_XINPUT_Enabled() to return false.
That causes WGI and DInput backends to take ownership of XInput-compatible
controllers, because they think there's no XInput-specific backend enabled.
In WGI's case, it will actually race with RawInput to open the device. By
properly excluding XInput devices from WGI, we can ensure that the sets of
devices managed by WGI and RawInput don't intersect. This makes the race
harmless, since they'll never both go after the same device.
|
|
b3e909dc
|
2021-11-07T13:51:34
|
|
WGI: Fix SDL_IsXInputDevice() for Xbox One controllers
The Xbox One driver stack doesn't propagate the VID/PID down to the
HID devices that end up in the GetRawInputDeviceList() output. This
means we end up matching against the wrong VID/PID and can't properly
exclude Xbox One controllers from WGI.
Fortunately, it is possible to walk back up the device tree to find
the parent with the matching VID/PID.
|
|
6312aaea
|
2021-11-06T21:52:22
|
|
WGI: Add workaround for delayed callbacks after WGI_JoystickQuit()
|
|
2371b247
|
2021-10-31T18:27:51
|
|
windows: improve feature detection consistency between CMake and non-CMake builds
|
|
27a48b14
|
2021-09-07T15:50:21
|
|
Check the pathname first, as that's a faster check for XInput devices
|
|
9b4884d5
|
2021-08-03T09:23:54
|
|
Warn if you're building a partially functional RAWINPUT driver without device notifications
|
|
834a84fa
|
2021-08-03T05:02:32
|
|
winrt: Don't use LoadLibraryA on WinRT.
This removes the CM_Register_Notification code on WinRT. Note
that this API _is_ available to UWP apps as of Windows 10.0.17763
(version 1809, released October 2018), according to:
https://docs.microsoft.com/en-us/uwp/win32-and-com/win32-apis#apis-from-api-ms-win-devices-config-l1-1-1dll
So it might be worth readding with some sort of preprocessor check
for minimum targeted version, or whatever is appropriate for WinRT
development.
|
|
02223501
|
2021-08-02T16:40:58
|
|
Fixed crash if WGI didn't give us the name for a controller
|
|
9d457aa4
|
2021-07-29T14:24:40
|
|
Don't uninitialize COM because of what appears to be a bug in Microsoft WGI reference counting.
This fixes https://github.com/libsdl-org/SDL/issues/4488
|
|
d4ac6b5e
|
2021-07-24T15:58:33
|
|
Detect buffer overflow when getting DirectInput device state
This fixes bug https://github.com/libsdl-org/SDL/issues/4528
|
|
adb75d64
|
2021-07-23T23:45:18
|
|
Fixed hotplug detection not working on UWP or when SDL isn't pumping Windows events
This fixes bugs:
https://github.com/libsdl-org/SDL/issues/4321
https://github.com/libsdl-org/SDL/issues/4147
Thanks to DJm00n for the suggestion!
|
|
24059a19
|
2021-07-09T18:11:42
|
|
The RAWINPUT driver is no longer tied to HIDAPI in any way
|
|
d135c076
|
2021-07-08T13:22:41
|
|
Added SDL_GameControllerSendEffect() and SDL_JoystickSendEffect() to allow applications to send custom effects to the PS4 and PS5 controllers
See testgamecontroller.c for an example of a custom PS5 trigger effect
|
|
39302c92
|
2021-06-02T14:28:33
|
|
Add Steam Virtual Gamepad and Xbox 360 Wired Controller defines instead of magic values
See https://partner.steamgames.com/doc/features/steam_controller/steam_input_gamepad_emulation_bestpractices for details on what is Steam Virtual Gamepad.
|
|
205b951b
|
2021-06-25T14:20:08
|
|
SDL_DINPUT_JoystickPresent() needs to do the full device enumeration
It is called from WGI before the normal joystick detection has been run, so it needs to actually enumerate currently connected devices.
We can skip the logic checking for other drivers also supporting this device, because that logic is duplicated from the call site.
|
|
f5122377
|
2021-06-10T14:06:32
|
|
Move SDL_IsXInputDevice check above actual joystick allocation
|
|
766d81ec
|
2021-06-10T14:01:04
|
|
Rewrite SDL_DINPUT_JoystickPresent method to avoid costly IDirectInput8_CreateDevice calls
|
|
a6da2fbf
|
2021-05-25T12:33:23
|
|
Rename haptic methods to avoid confusion with joystick:
`SDL_DINPUT_MaybeAddDevice`->`SDL_DINPUT_HapticMaybeAddDevice`
`SDL_DINPUT_MaybeRemoveDevice`->`SDL_DINPUT_HapticMaybeRemoveDevice`
`SDL_XINPUT_MaybeAddDevice`->`SDL_XINPUT_HapticMaybeAddDevice`
`SDL_XINPUT_MaybeRemoveDevice`->`SDL_XINPUT_HapticMaybeRemoveDevice`
|
|
73dc68a7
|
2021-05-19T17:52:08
|
|
Simplify and cleanup DirectInput joystick backend code:
- Do not call IDirectInputDevice8_QueryInterface(device, &IID_IDirectInputDevice8,...) on DIRECTINPUTDEVICE8 device
- Get joystick VendorID and ProductID via IDirectInputDevice8_GetProperty(.., DIPROP_VIDPID, ..) call instead of messing with DIDEVICEINSTANCE.guidProduct
- Normalize HID device interface path to upper case for stable operation of XInput check
- Remove useless RawInput calls in SDL_IsXInputDevice() - just check for "IG_" string in HID device interface path that we already have
There shouldn't be any observable behavior changes.
|
|
f2f759dc
|
2021-02-26T15:34:34
|
|
Remove not used DirectInput ignored_devices list
|
|
adc2d362
|
2021-02-26T15:33:41
|
|
Remove outdated and not used WIN_IsXInputDevice code
|
|
f498c281
|
2021-06-02T14:10:50
|
|
fixed build with SDL_JOYSTICK_RAWINPUT enabled after commit b81969d46f4b
See: https://github.com/libsdl-org/SDL/pull/4388#issuecomment-852713792
|
|
40210f89
|
2021-04-26T15:54:14
|
|
winrt: Always use a thread for joystick support
|
|
fadfa510
|
2021-02-01T09:21:11
|
|
Don't uncorrelate while rumble is active and stay correlated longer in case raw input messages are lagging a bit.
|
|
fd65aaa9
|
2021-01-23T17:30:50
|
|
move outdated winmm and psp joystick codes to struct _SDL_JoystickDriver
build-tested only. (bug #5472.)
|
|
11fce321
|
2021-01-22T20:20:02
|
|
SDL_dinputjoystick.c: fixes to dfDIJoystick2[] array from Wine git.
Fix V/A/FSlider dwOfs values in c_dfDIJoystick2
https://source.winehq.org/git/wine.git/commitdiff/af2f4194263702a946c65d255580176ee50b5914
Add missing ASPECT flags for c_dfDIJoystick2
https://source.winehq.org/git/wine.git/commitdiff/e2e100272ffede3c720da7bbd11b53ac0bcee8eb
Closes bug #5474.
|
|
f3835702
|
2021-01-17T05:00:50
|
|
fix build with --disable-directx
|
|
a594b850
|
2021-01-04T10:00:30
|
|
use WIN_StringToUTF8W macro instead of WIN_StringToUTF8, where needed:
i.e. where the string is known guaranteed to be WCHAR*, in:
- SDL_dinputjoystick.c (WIN_IsXInputDevice): VARIANT->var is BSTR (WCHAR*)
- SDL_rawinputjoystick.c (RAWINPUT_AddDevice): string is WCHAR*
- SDL_windows_gaming_input.c (IEventHandler_CRawGameControllerVtbl_InvokeAdded):
string is WCHAR*
There should be more of these..
|
|
f2bd861c
|
2021-01-04T08:50:00
|
|
move SDL_tcsstr definition to core/windows/SDL_windows.h
|
|
ae18109a
|
2021-01-04T01:23:50
|
|
SDL_windowsjoystick.c (SDL_CreateDeviceNotification): use L, not TEXT()
cf. bug #5435.
|
|
398d2764
|
2021-01-04T01:23:50
|
|
RAWINPUT_InitWindowsGamingInput: change pNamespace from LPTSTR to PCWSTR
because WindowsCreateStringReference specifically accepts const WCHAR *
- WGI_JoystickInit(): ditto.
cf. bug #5435.
|
|
f09e0af7
|
2021-01-04T01:23:50
|
|
SDL_dinputjoystick.c (IsXInputDevice): adjust to be ANSI/UNICODE-agnostic
cf. bug #5435.
|
|
9130f7c3
|
2021-01-02T10:25:38
|
|
Updated copyright for 2021
|
|
cbe13d23
|
2020-12-18T13:10:36
|
|
Fixed controller hotplug detection when joystick thread is not enabled
|
|
90456670
|
2020-12-17T14:11:00
|
|
more "'for' loop initial declarations are only allowed in C99 mode" fixes
|
|
9ee0e888
|
2020-12-12T22:11:00
|
|
Whoops, make the hint actually default to false
|
|
13a4caf1
|
2020-12-12T22:08:02
|
|
Fixed bug 4286 - Joystick subsystem causes "not responding" when app is in the background
Added a hint to control whether a separate thread should be used for joystick events.
This is off by default because dispatching messages in other threads appears to cause problems on some versions of Windows.
|
|
797a6910
|
2020-12-09T20:28:51
|
|
Fixed bug 5375 - WGI: Fix HSTRING memory leak.
Joel Linn
TLDR; https://godbolt.org/z/43fd8G
Let's deduce this from C++ reference code:
https://docs.microsoft.com/en-us/cpp/cppcx/wrl/how-to-activate-and-use-a-windows-runtime-component-using-wrl?view=msvc-160
At the bottom of the page there is this snippet:
```
int wmain()
{
/* ... more code ... */
// Get the domain part of the URI.
HString domainName;
hr = uri->get_Domain(domainName.GetAddressOf());
if (FAILED(hr))
{
return PrintError(__LINE__, hr);
}
// Print the domain name and return.
wprintf_s(L"Domain name: %s\n", domainName.GetRawBuffer(nullptr));
// All smart pointers and RAII objects go out of scope here.
}
```
`HString` is defined in `corewrappers.h` and the call chain for the destructor is:
`~HString() -> Release() -> ::WindowsDeleteString()`
QED
|
|
a77a0715
|
2020-12-09T07:50:15
|
|
Disabled raw input debug output
|
|
cb361896
|
2020-12-09T07:16:22
|
|
Fixed bug 5235 - All internal sources should include SDL_assert.h
Ryan C. Gordon
We should really stick this in SDL_internal.h or something so it's always available.
|
|
f2fff217
|
2020-12-09T06:24:40
|
|
Fixed bug 5374 - WGI: Use fast-pass strings.
Joel Linn
Eliminate additional heap allocation for short-lived HSTRINGs.
Uses `WindowsCreateStringReference()` to disable reference counting and memory management by the Window Runtime.
|
|
1031231b
|
2020-12-03T18:17:03
|
|
Fixed duplicating a device between XInput and HIDAPI
|
|
c78ca2d1
|
2020-12-01T13:38:42
|
|
Fixed bug 5371 - Rawinput: Fix truncating cast of string length.
Joel Linn
Fixes an implicit truncation of a string length on 64bit systems.
|
|
a3ccf9ad
|
2020-12-01T13:36:41
|
|
Fixed bug 5373 - [PATCH] Rawinput: Get correlated XInput battery info
Joel Linn
Currently the rawinput driver always reports a device as "wired". This changes that to "unknown" and updates it once the device is correlated with xinput.
|
|
1f2f536b
|
2020-11-27T18:57:40
|
|
Fixed XInput correlation for raw input controllers after hotplug events
|
|
1c865c46
|
2020-11-27T18:57:36
|
|
Load the raw input device list at init time so it's available when DirectInput is doing device detection
|
|
a0c5bfa3
|
2020-11-27T13:08:40
|
|
Moved raw input event processing from the main thread to the joystick thread
This allows fast joystick event delivery regardless of what the main thread is doing.
|
|
4fbefbe2
|
2020-11-27T11:33:53
|
|
Sort the raw input axes by usage, so X comes before Y, etc.
|
|
4ddac485
|
2020-11-27T11:33:51
|
|
Backed out minor optimization that prevented correlation_id from being set
|
|
8973a258
|
2020-11-27T10:44:56
|
|
Enable dispatching of WM_INPUT_DEVICE_CHANGE events directly, in case the application hasn't created a window with the normal message loop
|
|
e8adc648
|
2020-11-27T10:44:55
|
|
Enable dispatching of WM_INPUT events directly, in case the application hasn't created a window with the normal message loop
|