Commit Graph

8596 Commits

Author SHA1 Message Date
Sam Lantinga
ffb8515c21 Use the Valve code name for the Steam Deck controller 2023-12-28 15:41:02 -08:00
Sam Lantinga
43c40d30a2 Added comment for the BDA Pro Ex controller 2023-12-28 15:22:28 -08:00
Sam Lantinga
c24b33d8d9 Fixed building with older Windows SDK 2023-12-28 15:14:34 -08:00
Sam Lantinga
70ba3f2830 Report the D-Pad for HIDAPI gamepads as a hat
This makes it easier for games that don't use the gamepad API to handle D-Pad navigation, and is consistent with many other non-HIDAPI mappings.

Fixes https://github.com/libsdl-org/SDL/issues/8754
2023-12-28 14:14:51 -08:00
Sam Lantinga
ce329d60e4 Added support for alpha blending using palette alpha
Fixes https://github.com/libsdl-org/SDL_image/issues/409
2023-12-28 09:33:02 -08:00
Frank Praznik
9c3e831e33 uikit: Send fullscreen enter/leave events
Send fullscreen enter/leave events, which will implicitly update the fullscreen flag. Manually setting the flag will suppress attempts to send the events later, as the flag is used for deduplication purposes in the event code.
2023-12-27 17:23:49 -05:00
Sam Lantinga
0dfdf1f3f2 Fixed crash if joystick functions are passed a NULL joystick 2023-12-27 11:25:54 -08:00
Reilly Brogan
4ce935b910 Fix static build with libdecor 0.2.0 2023-12-26 16:29:36 -08:00
Susko3
5d6d149862 Allow passing in extrainfo value to GetMouseMessageSource()
This saves a syscall in WM_INPUT handling
2023-12-26 13:42:19 -08:00
Susko3
e0df963ef0 Fix wrong bit count in comment
If we're counting bits from 0, then the MSB is bit 31!
2023-12-26 13:42:19 -08:00
Susko3
c2a55cd2c5 Add missing (void) in functions params 2023-12-26 13:42:19 -08:00
Susko3
a3c8f2f6cb Consolidate mouse-touch event checking logic
Saves one `GetMessageExtraInfo()` syscall when handling WM_INPUT events.

Will provide consistent results across various event types.
2023-12-26 13:42:19 -08:00
Susko3
d747daf03d Use correct touch check flag
Matches the one in `GetMouseMessageSource()`.
From my testing on Windows 11, the lower 8 bits in touch events cycle
trough the values 0x8c-0x95 in order.
2023-12-26 13:42:19 -08:00
Alynne
cae657140c Add Access Controller 2023-12-26 09:58:09 -08:00
Susko3
bbdd41f287 Fix windows touch using wrong axis for normalisation
Regressed with 9302d7732d
2023-12-26 09:12:17 -08:00
Tyson Whitehead
6daf2e943f Try SDL_UDEV_deviceclass to detect joysticks even if in a container
The udev container issue is mostly to do with device notifications
and netlink. The device classification stuff just pokes file in /sys
and /run/udev. Doesn't hurt to try it first for classifying joysticks
and then fall to the guess heuristics if it fails.
2023-12-24 22:39:16 -08:00
Sam Lantinga
1bf78ed544 We get a resize event when the view enters fullscreen mode on iOS
The call stack is:

We want to use this instead of the desktop mode because the view may be in a different orientation than the device orientation, which the desktop mode is based on.
2023-12-24 17:45:35 -08:00
Sam Lantinga
e3b5999bb4 Use the application requested size to determine automatic orientation on iOS
Fixes https://github.com/libsdl-org/SDL/issues/8201
2023-12-24 17:14:16 -08:00
Sam Lantinga
278e3f9184 Whoops, fixed setting fullscreen flag 2023-12-24 17:12:01 -08:00
Sam Lantinga
69e60e0f1b Fixed setting fullscreen mode on iOS
Needed to update the actual window flags based on the requested state (@Kontrabant)
2023-12-24 16:24:22 -08:00
Sam Lantinga
0e5ea3cc4b Fixed infinite recursion when adding an accelerometer as joystick on iOS
Fixes https://github.com/libsdl-org/SDL/issues/8716
2023-12-24 11:19:16 -08:00
Sam Lantinga
c3d84c3342 Record the initial input report mode and only restore simple mode if that's what we started with
Fixes https://github.com/libsdl-org/SDL/issues/8108
Closes https://github.com/libsdl-org/SDL/pull/8115
2023-12-24 08:12:14 -08:00
Julian Uy
10a8b750a0 Use common generic syscond for platforms with no cond implementation 2023-12-24 06:52:42 -08:00
Julian Uy
4914e5bb78 PS2 use WaitSemaEx for waiting for semaphore with timeout 2023-12-24 06:52:27 -08:00
Sylvain
312f98c2a1 Make sure the string is terminated, fixed invalid read in SDL_PrivateParseGamepadConfigString() 2023-12-23 12:55:21 -08:00
Frank Praznik
199f7cc3b1 x11: Ignore border extents when the border hint is unset
Old extent events can arrive after the border hint has been unset. Ignore the reported values in this case to avoid reporting bogus border sizes.
2023-12-22 12:19:28 -05:00
Sylvain
ffd82fb7c4 Add scaleMode to SDL_SoftStretch(), remove SDL_SoftStretchLinear(). 2023-12-22 09:13:21 -08:00
Sylvain
5dba04b29b Remove SDL_{Set,Get}SurfaceScale().
Add Scale parameter to SDL_BlitSurfaceScaled() and SDL_BlitSurfaceScaledUnchecked()
(see #8732)
2023-12-22 02:08:49 -08:00
Frank Praznik
e66896406d cocoa: Set appropriate flags on fullscreen spaces windows
Don't mark fullscreen windows as having a title bar if the window is borderless, or it can end up in a weird, pseudo-decorated state when leaving fullscreen if the borders were toggled back on while the window was fullscreen.

Setting the window styling when about to leave fullscreen caused issues with this as well and is no longer needed, as it is ensured that the window's resizable state won't change while in a fullscreen space, or in a transition period.
2023-12-21 17:44:23 -05:00
Frank Praznik
57fcb9044c video: Remove more assumptions about window state in the video layer
Don't check the fullscreen flag when toggling resizable, bordered, always on top, minimum size and maximum size, as the flag doesn't reflect pending async changes that may be in progress.

These properties can be made to be safely toggled while the window is in fullscreen mode and applied when returning to windowed mode, which ensures that requested window settings aren't lost if calling these functions while async fullscreen changes are in flight.
2023-12-21 17:44:23 -05:00
Dimitriy Ryazantcev
cb90653695 win32: use USER_DEFAULT_SCREEN_DPI instead of explicit 96 value 2023-12-21 08:32:10 -08:00
Lukas Senionis
a2e05480d6 Use crc16 return value when calculating GUID
Fixes the regression introduced by 919cd56b20
2023-12-21 07:00:13 -08:00
Sam Lantinga
2ad50e9675 Make the SDL3 surface ABI compatible with SDL2
We'll use properties for new data associated with a surface, which lets us preserve ABI compatibility with SDL2 and any surfaces created by applications and passed in to SDL functions.
2023-12-21 06:58:22 -08:00
Sam Lantinga
f72d6a7fd9 Use more verbose names for properties, to match upcoming public property names 2023-12-21 06:58:22 -08:00
Sam Lantinga
1f1ee6f77c Use the original manufacturer and product strings for the joystick CRC
This allows the most information possible for the CRC string, which is used to differentiate controllers with the same VID/PID.

Fixes https://github.com/libsdl-org/SDL/issues/8724
2023-12-20 19:22:37 -08:00
Sam Lantinga
72c366bf3d Fixed whitespace 2023-12-20 11:06:34 -08:00
Dimitriy Ryazantcev
3152b98e87 win32: minor fixup in WIN_UpdateKeymap()
Remove unused defines in SDL_windowsevents.c
2023-12-20 11:01:45 -08:00
Sam Lantinga
c981a597dc Added Steam Input API support for game controllers
Added support for getting the real controller info, as well as the function SDL_GetGamepadSteamHandle() to get the Steam Input API handle, from the virtual gamepads provided by Steam.

Also added an event SDL_EVENT_GAMEPAD_STEAM_HANDLE_UPDATED which is triggered when a controller's API handle changes, e.g. the controllers were reassigned slots in the Steam UI.
2023-12-20 10:40:28 -08:00
Vicki Pfau
a8f4f40d08 Sync more Steam Controller header definitions for the Steam Deck 2023-12-19 20:18:37 -08:00
Frank Praznik
69ec0322d3 win32: Make leaving fullscreen when the window already isn't fullscreen a no-op
Otherwise, the styling on external windows may end up being overridden.
2023-12-18 11:47:59 -05:00
Frank Praznik
8f79e0b7f8 win32: Fix high-DPI debug logging 2023-12-18 11:31:37 -05:00
Dimitriy Ryazantcev
43309d38ed joystick: Extract 0x02a9 and 0x0291 PIDs into separate defines.
Cleanup controller list comments block.
2023-12-18 05:43:38 -08:00
Sylvain
84a0d5f623 Added SDL_SetSurfaceScaleMode() and SDL_GetSurfaceScaleMode() to control scale mode using SDL_BlitSurfaceScaled() 2023-12-17 15:39:53 -08:00
Sam Lantinga
4d5949dcf6 Added a controller name for the Steam virtual gamepad 2023-12-17 10:07:46 -08:00
Sam Lantinga
695846f2ed Pass through the name of the controller for the XInput mapping 2023-12-17 09:33:53 -08:00
Frank Praznik
1745289b1b x11: Don't move the window when restoring and ensure that resize and position events are sent when entering or leaving fullscreen
Account for the border sizes when restoring the window and only turn off resize events when entering or leaving fullscreen until the frame extents are changed, and only if they are, or previously were, non-zero.

This necessitated further refinement to the sync algorithm as well, but as a result, the sync function no longer occasionally times out if creating a window and immediately recreating it when initializing a renderer, and some rare, spurious size and position failures in the centered window and state automated tests seem to be fixed.
2023-12-17 11:39:49 -05:00
Dimitriy Ryazantcev
08a7ca4d53 XInput: Use XInputGetCapabilitiesEx instead of fragile GuessXInputDevice
XInputGetCapabilitiesEx (ordinal 108) is available in XInput 1.4 that is shipped with Windows 8 and newer.
2023-12-17 08:32:10 -08:00
Sam Lantinga
72b7acfe8a Don't create a TLS error buffer if we're just clearing the error
Fixes https://github.com/libsdl-org/SDL/issues/7600
2023-12-16 21:28:43 -08:00
Frank Praznik
b937c54b66 win32: Set all size and position variables for external windows 2023-12-15 16:41:20 -05:00
Sam Lantinga
8c285828e5 Fixed return value for SDL_UDEV_AddCallback()
Fixes https://github.com/libsdl-org/SDL/issues/8694
2023-12-15 10:06:01 -08:00