Commit Graph

7561 Commits

Author SHA1 Message Date
Aikawa Yataro 4800edfa0c Update qsort implementation
(cherry picked from commit 0fe9f5da54)
2024-06-19 05:47:55 +03:00
Sam Lantinga a6fdd155fb Pass through the original name used by the Steam Virtual Gamepad
Proton uses this on Linux to determine what the XInput slot is for the gamepad. Other applications will get the real controller name and VID/PID by virtue of the code in SDL_steam_virtual_gamepad.c

(cherry picked from commit 361cae0874)
2024-06-17 12:14:59 -07:00
rfht 177dfddaf7 simplify OpenBSD D-pad calculation with bitwise operation (#7996)
(cherry picked from commit 4d63c919f9)
2024-06-16 05:56:35 -07:00
Ryan C. Gordon 510f413bb8
coreaudio: simplify memory leak fix.
I _did_ appreciate the explanation, but it doesn't have to live in the
source code; also we can just release `devuid` and then check for error with
the usual macro, since SDL is done with it either way at this point.

(cherry picked from commit 17af09f3a9)
2024-06-15 11:47:27 -04:00
obeecodes a9da8dd22d Addressed memory leak in SDL_coreaudio.m
(cherry picked from commit 3b5dce10c4)
2024-06-15 08:09:14 -07:00
Ozkan Sezer a4d240d295 SDL_events.c: remove long long casts an the override of SDL_PRIs64 2024-06-14 18:47:56 +03:00
Ozkan Sezer 9422c57201 revert commit ac25395 as it broke linux.. 2024-06-14 14:56:32 +03:00
Ozkan Sezer ac253956b9 SDL_events.c: override of SDL_PRIs64 for mingw is no longer needed
(cherry picked from commit 65d911aff0)
2024-06-14 14:51:10 +03:00
Ozkan Sezer 948b926d47 SDL_qsort.c: better match private funcs' compare args to SDL3 version. 2024-06-14 14:50:32 +03:00
Sam Lantinga 169f77ed5e Re-enable full controller reports for Joy-Con controllers
When they are in simple report mode, the thumbstick gets turned into a digital hat, so let's use them in full report mode.

(cherry picked from commit bf27269952)
2024-06-13 00:02:00 -07:00
Sam Lantinga 6b9bf71133 Try to guess the type of a Nintendo Switch controller if we can't read the device info
(cherry picked from commit 6619de8f24)
2024-06-13 00:01:40 -07:00
Sam Lantinga f1b19aa744 Ignore spurious reply packets when reading Nintendo Switch controller reports
(cherry picked from commit 5ee9a840b1)
2024-06-12 23:59:07 -07:00
Ozkan Sezer ce6d3c5cc1 SDL_qsort.c: change private function compare args to SDL_CompareCallback
fixes watcom os/2 and win32 builds after commit b2b2369414
2024-06-13 04:50:56 +03:00
Ryan C. Gordon b2b2369414
Moved function pointer params to typedefs, etc, for latest wikiheaders. 2024-06-12 19:29:21 -04:00
Hanicef 1c3090a1ac Fix broken dead key behavior on Wayland
This fixes numerous problems regarding dead keys on Wayland. Most
notably, Wayland was enforcing dead keys on SDL_KEYDOWN and SDL_KEYUP
events, which caused unresponsiveness on keys that were mapped to dead
keys (tilde on US-Intl is most notable for this, commonly used as a
console key).

When starting text input, not all state was reset properly. The text
input protocol requires to be re-enabled every time text input changes,
which SDL did not do. Also, XKB compose state was not reset at all,
causing composite and dead keys to carry over from when text input was
disabled.
2024-06-08 11:43:20 -04:00
Sam Lantinga 7fce9f3fd0 Minor cleanup for SDL style 2024-06-07 09:26:55 -07:00
Sam Lantinga 2e8bd8f1f3 Fixed build 2024-06-07 09:05:10 -07:00
Fabrice Desclaux 22c14442e2 Fix spurious LCtrl on RAlt key pressed 2024-06-07 08:45:47 -07:00
Oleg 0f9191a643 Added VRS DirectForce Pro wheelbase VID/PID to wheel devices list
(cherry picked from commit 7529b4bed5)
2024-06-06 09:54:40 -07:00
Frank Praznik fc6bbde525 wayland: Set the initial min/max limits on non-libdecor windows during a show operation
Libdecor windows will have this done during the first frame configure, but bare xdg-toplevel windows need it set explicitly, or a non-resizable window might be able to be resized.
2024-06-06 09:50:38 -04:00
Sam Lantinga f520062ad1 Fixed PlayStation detection interrupting input for the Logitech K400 keyboard
Also added the Logitech Chillstream to the list of PS3 controllers and fixed the right shoulder axis.

(cherry picked from commit b6d7adfec1)
2024-06-05 19:29:48 -07:00
Sam Lantinga e2f597de84 Added support for the Saitek Cyborg V.3 Rumble Pad in PS3 mode
(cherry picked from commit b6ca360228)
2024-06-05 19:28:26 -07:00
erysdren e1bb00cdc9 Add a basic ShowMessageBox implementation for PSP (#9932) 2024-06-05 17:36:18 +02:00
erysdren 6da5242535 SDL_render_psp.c: Fix crash in PSP_DestroyRenderer() 2024-06-04 15:06:44 -07:00
Wouter Wijsman 018f2791c7 PSP: Add on-screen keyboard support 2024-06-04 14:04:45 -07:00
Sam Lantinga 35d719ef25 Added support for the Razer Kitsune in PS5 mode
(cherry picked from commit e3beaa1972)
2024-05-31 15:18:46 -07:00
Ozkan Sezer d5e5d4a802 move vista+ display config function ptr calls to device->driverdata
backport from PR/9923 (commit e4518af377)
2024-05-31 20:04:20 +03:00
Cameron Cawley 65d8c07c7d Allow building the Raspberry Pi video driver with standard EGL headers 2024-05-27 12:30:58 -07:00
Anonymous Maarten c79e616806 d3d12: older Windows SDK headers contain wrong function prototypes
Declare correct function pointers ourselves.

Backport of:
- 98fcf112e7
- 89a4d9ae67
2024-05-25 00:41:47 +02:00
Anonymous Maarten 54c435409b d3d12: xbox has no DXGI_PRESENT flags 2024-05-25 00:41:47 +02:00
Sam Lantinga 964e0c9b47 Added Linux bindings for the Qanba Drone 2 Arcade Joystick
(cherry picked from commit 98a9ca5e32)
2024-05-23 15:35:03 -07:00
Phena Ildanach fdf28471c0 hidapi: Use a whitelist for libusb when other backends are available 2024-05-17 11:17:56 -07:00
APGR22 e4fc07cad0 Added NULL pointer check
(cherry picked from commit 961488b0dc)
2024-05-17 09:01:11 -07:00
Frank Praznik a25a5a243c
wayland: Disable warp emulation when restoring cursor visibility with the shape protocol
(cherry picked from commit 67f3a3ee54)
2024-05-16 13:01:19 -04:00
Frank Praznik 3794e3dc90
wayland: Set the cursor visibility flag when using the cursor shape protocol
(cherry picked from commit 9ac523f940)
2024-05-16 12:00:28 -04:00
Anonymous Maarten 62f35ab1b6 Use SDL_test + don't use macros
The structure of the existing loop makes the inner loop of the previous commit unnecessary.

Manual backport of 558630d59c
2024-05-16 17:54:13 +02:00
Oleg 96e3799495 Added Moza wheelbases VID/PID to wheel devices list
(cherry picked from commit 79cabeef18)
2024-05-15 19:40:34 -07:00
Oleg 1f54ee1da6 Added Simucube wheelbases VID/PID to wheel devices list
(cherry picked from commit dc9d9dd85a)
2024-05-15 19:40:34 -07:00
Oleg 0c7a83ecd5 Added Cammus C5 wheelbase VID/PID to wheel devices list
(cherry picked from commit ce9177b64f)
2024-05-15 19:40:34 -07:00
Sam Lantinga efaa58732a Don't enable enhanced report mode for Bluetooth Nintendo Switch controllers by default
This breaks applications using them in DirectInput mode, which isn't worth just getting battery status. We'll turn on enhanced mode if the application enables sensors.

(cherry picked from commit a87fa020ac)
2024-05-10 12:19:18 -07:00
Ozkan Sezer b6899f82fb SDL_iconv_string: simplify recomputation of outbuf and outbytesleft
Noticed this in SDL-1.2 where gcc-13 emits a -Wuse-after-free warning.
No such warning in SDL2 and SDL3, because unlike SDL1.2, SDL_realloc()
is not a macro expanding to libc realloc(). It warns, of course, if
SDL_realloc() is replaced with plain realloc():

src/stdlib/SDL_iconv.c: In function 'SDL_iconv_string_REAL':
src/stdlib/SDL_iconv.c:824:39: warning: pointer 'oldstring' may be used after 'realloc' [-Wuse-after-free]
  824 |             outbuf = string + (outbuf - oldstring);
      |                               ~~~~~~~~^~~~~~~~~~~~
src/stdlib/SDL_iconv.c:818:30: note: call to 'realloc' here
  818 |             string = (char *)realloc(string, stringsize + sizeof(Uint32));
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(cherry picked from commit 2205626816)
2024-05-10 18:56:24 +03:00
Ozkan Sezer 312a8a19d7 SDL_x11sym.h: corrected XQueryKeymap() proto.
Noticed this in SDL-1.2 in a gcc-13 build, which emitted the following
warning:  (No such warnings in SDL2 and SDL3, due to macro differences)

./src/video/x11/SDL_x11sym.h:84:48: warning: argument 2 of type 'char *' declared as a pointer [-Warray-parameter=]
   84 | SDL_X11_SYM(int,XQueryKeymap,(Display* a,char *b),(a,b),return)
      |                                          ~~~~~~^
./src/video/x11/SDL_x11dyn.c:95:15: note: in definition of macro 'SDL_X11_SYM'
   95 |         rc fn params { ret p##fn args ; }
      |               ^~~~~~
In file included from ./src/video/x11/SDL_x11dyn.h:27,
                 from ./src/video/x11/SDL_x11dyn.c:26:
/usr/include/X11/Xlib.h:2980:5: note: previously declared as an array 'char[32]'
 2980 |     char [32]           /* keys_return */
      |     ^~~~~~~~~

The original actually was char[32] but was changed with
8ada1e8a6e
(https://bugzilla.libsdl.org/show_bug.cgi?id=170
https://github.com/libsdl-org/SDL-1.2/issues/101)

(cherry picked from commit b2fca55e5c)
2024-05-10 18:56:10 +03:00
Ryan C. Gordon 7d60ff9965
SDL_JoystickEventState: Make documentation and implementation match.
This changes the `SDL_EVENTS_DISABLED` path's return value from SDL_DISABLE
to SDL_IGNORE to match expectations, but doesn't actually change the ABI,
since these two symbols are both zero.

Fixes https://github.com/libsdl-org/sdlwiki/issues/460
2024-05-08 16:41:58 -04:00
Sam Lantinga 8c92af5e54 Added a Windows mapping for the SPEEDLINK STRIKE Gamepad
Fixes https://github.com/libsdl-org/SDL/issues/9705

(cherry picked from commit 01d560df50)
2024-05-06 10:11:39 -07:00
Sam Lantinga 1caa427035 Fixed building with GDK (thanks @Romans-I-XVI!) 2024-04-30 10:20:55 -07:00
Austin Sojka 7554e82ec3
Added GDK app constrained/unconstrained events (#9608) 2024-04-30 10:19:29 -07:00
Sam Lantinga 67c60e0b9c Fixed build error (thanks @sezero!)
(cherry picked from commit ac5a61cd60)
2024-04-25 09:45:36 -07:00
Tyson Whitehead 45b804c158 Avoid opening non-joystick devices if possible to speedup scanning
Closing a device file takes 0.01 to 0.5s, which can add up to
significant startup delays. The udev classification does not
require opening the actual device files, so, use it if possible,
and only fall back to opening the device and probing otherwise.
2024-04-25 08:47:55 -07:00
Tyson Whitehead 0963c11af8 Initialize udev before joystick manual scan so class lookup works
LINUX_JoystickInit does a manual scan first so devices are sorted.
If SDL_UDEV_Init hasn't run by then, then the product info cannot
be looked up by SDL_UDEV_GetProductInfo and the initial-plugged-
in-device classification falls back to heuristic guessing.
2024-04-25 08:47:55 -07:00
Frank Praznik 863d4a0f2a
x11: Fix pointer warp on XWayland
XWayland seems to require that the pointer be hidden when it is warped, so hide and show the pointer when warping, if required.

Note that XWayland still only allows warping within the window, so attempts to warp to global coordinates outside the window won't work.

(cherry picked from commit a845c7027e)
2024-04-25 10:44:55 -04:00
Sam Lantinga 59cc43ccbb Added a note about WIN+V for future reference (thanks @orconut!) 2024-04-24 09:38:26 -07:00
Sam Lantinga 33af02ae68 Fixed Win+V handling (pasting from clipboard history) on Windows (thanks @ocornut!)
Fixes https://github.com/libsdl-org/SDL/issues/9613
2024-04-24 09:22:57 -07:00
yassineimounachen 8f18e2f52d Add USB IDs for the Thrustmaster TS-XW racing wheel
To be of use, this depends on https://github.com/berarma/oversteer/pull/200 and https://github.com/Kimplul/hid-tmff2/pull/94.

(cherry picked from commit 5ffb2f47d1)
2024-04-22 11:36:30 -07:00
Sam Lantinga 4e29be814e Fixed compilation with C89 (thanks @d-s-a!)
Closes https://github.com/libsdl-org/SDL/pull/9564
2024-04-17 07:47:29 -07:00
Sam Lantinga effc16954f Fixed build 2024-04-15 09:32:00 -07:00
Cameron Cawley 59a0416819 3DS: Improve framebuffer support 2024-04-15 04:38:28 -10:00
Cameron Cawley 4df852cbbf 3DS: Ensure that touchscreen events are associated with a window 2024-04-15 03:33:10 -10:00
Cameron Cawley 6c6b497f89 Prefer display modes that exactly match the desired format or refresh rate 2024-04-15 03:31:10 -10:00
Cameron Cawley 596096a86a Add a quirk for fullscreen-only video drivers 2024-04-15 03:30:21 -10:00
Clownacy 1fa6142903 Fix default Windows window icon not suiting the DPI.
For whatever reason, `ExtractIconEx` returns icons whose sizes are
inappropriate for the current DPI, resulting in terribly-blurry
window icons at higher DPIs.

To solve this, the window icon is now set to the first icon group
that is present in the executable. This behaviour should match what
Explorer does. By selecting an icon group instead of a specific icon,
Windows is free to select the icon within the group that best suits
the current DPI.
2024-04-02 12:03:01 -07:00
Zhuoran 906ad64d7b Fix Caps Lock and Backspace mapping for Colemak 2024-04-02 07:48:58 -07:00
Brian Collins f1690e265e Workaround a macOS cursor-related bug.
This fixes an macOS bug that is only known to occur in fullscreen windows on the built-in displays of newer MacBooks with camera notches. When the mouse is moved near the top of such a window (within about 44 units) and then moved back down, the cursor rects aren't respected. This can cause the default cursor to be visible when it should not be.
2024-04-01 16:18:02 -07:00
Sam Lantinga 5fff9bc1e3 Don't fail joystick initialization if udev isn't available 2024-03-25 11:45:41 -07:00
Alynne cbc9bd9804 Add Yawman Arrow flightstick controller
(cherry picked from commit 2b4c75690c)
2024-03-25 06:35:32 -07:00
Wouter Wijsman 5d80179954 PSP: send initial SDL_JOYDEVICEADDED event 2024-03-24 17:09:41 -07:00
Tyson Whitehead 6e1611cc77 udev: Fix O(n^2) device walking issue (closes #9092)
I believe there was a O(n^2) device walking issues on startup

- MaybeAddDevice gets called for every device at startup
- MaybeAddDevice calls IsJoystick
- IsJoystick calls SDL_UDEV_GetProductInfo
- SDL_UDEV_GetProductInfo calls udev_enumerate_scan_devices
- udev_enumerate_scan_devices walks all the devices

Prior to commit 3b1e0e1 this was mostly masked as IsJoystick only
called SDL_UDEV_GetProductInfo when a JSIOCGNAME ioctl was
successful. This fixes the O(n^2) behaviour by directly getting
the device via udev_device_new_from_devnum (based on type, major,
and minor number) instead of enumerating everything via
udev_enumerate_scan_devices and matching on name.
2024-03-24 11:48:31 -07:00
rofl0r 7b6695f4d4 PSP: zero-copy WindowSurface API for direct VRAM access
if all one needs is a raw framebuffer to the PSP's vram,
instead of dealing with renderers and textures, that need to be
copied hence and forth, this method allows one to create a window,
set the pixel format using SDL_SetWindowDisplayMode() - preferably
BGR565 for optimal speed (the other possible natively supported
option is ABGR8888) - and then request SDL_GetWindowSurface(),
which provides one with a surface with direct framebuffer access.
note that the pixels pointer inside the surface will be switched
after each call because of double-buffering.

it's advisable to overwrite all pixels of the PSP visible area
(480x272) to not encounter old data.

after writing the pixels, a call to SDL_UpdateWindowSurface()
sends the changes to the graphics chip.

the result is a raw framerate of 250 fps with BGR565 mode, under
optimal circumstances - i.e. nothing else is done than drawing,
and the drawing loop is as simple as possible.
that leaves about 12 ms per frame for other tasks and still allow
a fluent 60 fps.
2024-03-24 11:33:32 -07:00
rofl0r 37c664a13d PSP: fix regression, GetTicks64 should return millisecs
introduced in 82b449611a
2024-03-23 16:53:28 -07:00
rofl0r 82b449611a PSP: improve performance counter res to us granularity 2024-03-23 09:31:42 -07:00
Marcel Hild fa18c9bf4a Add support for MadCatz Saitek Side Panel Control Deck
Signed-off-by: Marcel Hild <hild@b4mad.net>
(cherry picked from commit 67e425bcf8)
2024-03-22 09:16:20 -07:00
Frank Praznik 5df737bb3c wayland: Check the returned display pointer before dereferencing
Fixes a crash when all displays are disconnected.
2024-03-20 15:44:32 -04:00
Sam Lantinga a9ac349846 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)

(cherry picked from commit 70b0d33106)
2024-03-20 10:41:56 -07:00
Pierre Wendling 4a79fe44ff N3DS: Fix locale name and early return.
- The name for simplified Chinese should be `zh_CN`.
- Ensure `cfguExit` is called even if `CFGU_GetSystemLanguage` failed.

(cherry picked from commit 390fff4ae0)
2024-03-19 16:54:30 -07:00
Cameron Gutman 43f0ae1e54 Improve event processing latency when gamepad/sensor is open
By using the SDL_WaitEventTimeout_Device() path even when polling is required,
we can still achieve sub-millisecond latency for non-gamepad/sensor events when
a gamepad or sensor is in use by the application.
2024-03-19 01:21:49 -05:00
rofl0r c17d2246fb PSP/Joystick: fix formatting 2024-03-17 13:22:53 -07:00
rofl0r 86f223d664 PSP: don't block on joystick event query
using the blocking sceCtrlReadBufferPositive() effectively turns SDL_PollEvent() into WaitForVblank(), because the functions does exactly that if no input is buffered.
due to this, calling SDL_PollEvent() once per frame averaged in 7 ms delay out of the available 16ms budget to get a frame calculated and drawn to achieve 60 fps.
2024-03-17 13:22:53 -07:00
Sam Lantinga 2d6c100058 Added a mapping for the Defender Joystick Cobra R4 (thanks @kotenok2000!)
(cherry picked from commit d972244d3a)
2024-03-17 12:14:17 -07:00
Sam Lantinga 07f04bb35e Use the CRC as part of the unique key for mappings
(cherry picked from commit 4697153d1e)
2024-03-17 12:14:11 -07:00
Frank Praznik 24aedc1439 wayland: Always use the entire buffer for the viewport source
Not doing so can result in protocol errors if the viewport source region is updated and a buffer with the old, smaller dimensions is committed.
2024-03-17 10:46:58 -04:00
Sam Lantinga b8daf14fe5 If a mapping specifies a crc, don't match for controllers that don't have that CRC
The CRC is used to distinguish between different controllers that have the same VID/PID, so if the CRC doesn't match, it's probably a different controller that we don't know about.

Fixes https://github.com/libsdl-org/SDL/issues/9265

(cherry picked from commit 30e93b40c2)
2024-03-14 13:36:12 -07:00
Frank Praznik 525c317ed9 wayland: Add cursor-shape-v1 protocol support
This is the preferred method of handling the cursor shape on KDE 6 and likely other window managers going forward.

Manual backport of c2e9693
2024-03-14 09:49:40 -04:00
Frank Praznik 88bdc028ec Fix build (C90 declaration order) 2024-03-12 22:06:36 -04:00
Frank Praznik d3c89bb479 wayland: Allocate the cursor shared memory buffer entirely in memory, if possible.
Use memfd_create() to allocate the temporary SHM backing file in memory, and set the size with posix_fallocate(), which will return an error on insufficient space vs ftruncate(), which will silently succeed and allow a SIGBUS error to occur if the unbacked memory is accessed.

Additionally, make the legacy path more robust by unlinking the temp file, so it won't persist after close, and unmapping the shared memory buffer.

(cherry picked from commit 9bdb992925)
2024-03-12 20:56:16 -04:00
Sam Lantinga e54774faca Removed incorrect mapping for a HORI controller
This broke support for the Hori Fighting Stick EX2, which gets a good mapping if the automatic mapping is allowed to create one.

If the original controller needs a mapping, it should be added with a crc, since that VID/PID combination is used by several HORI controllers.

(cherry picked from commit d79f865251)
2024-03-11 17:14:11 -07:00
Sam Lantinga 66054a6515 Turn HIDAPI joystick support off by default on mobile platforms
On Android, HIDAPI prompts for permissions and acquires exclusive access to the device, and on Apple mobile platforms it doesn't do anything except for handling Bluetooth Steam Controllers.

Fixes https://github.com/libsdl-org/SDL/issues/9241

(cherry picked from commit e3cf2e4794)
2024-03-10 15:03:47 -07:00
Sam Lantinga cd197be53b Fixed crash if joystick functions are passed a NULL joystick
In particular this affects the doomsday game engine if no joystick or
gamepad is attached.

(cherry picked from commit 0dfdf1f3f2)
[smcv: Also included minor adjustment from https://github.com/libsdl-org/SDL/pull/9233]
2024-03-09 08:40:49 -08:00
Sam Lantinga 528b71284f Added support for the 6-button SEGA Mega Drive Control Pad for Nintendo Online 2024-03-08 12:38:05 -08:00
Sam Lantinga 26054d9934 Fixed mapping for the Sanwa Supply JY-P76USV controller
(cherry picked from commit 57a160c9ab)
2024-03-06 20:54:33 -08:00
Jade Macho da9bfc43e7 GDK: Partially revert 2670eb44af
MsgWaitForMultipleObjects is desktop-only.

(cherry picked from commit e1e5d33420)
2024-03-06 21:28:00 +03:00
Ozkan Sezer 177a836653 SDL_RWFromFile, stdio: allow named pipes along with regular files.
Fixes https://github.com/libsdl-org/SDL/issues/9174
2024-03-06 18:50:00 +03:00
Sam Lantinga bdc7ad8f56 Keep track of whether the Android on-screen keyboard was opened by the application
Fixes https://github.com/libsdl-org/SDL/issues/9202

(cherry picked from commit edbcef11ff)
2024-03-05 13:53:56 -08:00
Sam Lantinga d35dee76c7 Added a mapping for the Sanwa Supply JY-P76USV controller
Fixes https://github.com/libsdl-org/SDL/issues/8644

(cherry picked from commit ccd309c433)
2024-03-03 12:23:59 -08:00
Sam Lantinga 9e1e0fb92f Removed the mapping for the G-Shark GS-GP702
This uses the same chipset as the DragonRise Inc. Generic USB Joystick, which many manufacturers use for different products with different mappings.

In order to add a mapping for a controller using this chipset, we need a unique crc for the device name.

(cherry picked from commit 8d8076263e)
2024-03-03 12:20:43 -08:00
Sam Lantinga 627e15871a SDL_GameControllerGetAppleSFSymbolsNameForAxis() returns NULL if the symbol isn't found 2024-03-03 11:56:29 -08:00
Sam Lantinga b87116ff03 SDL_GameControllerGetAppleSFSymbolsNameForButton() returns NULL if the symbol isn't found
Fixes https://github.com/libsdl-org/SDL/issues/9071
2024-03-03 11:09:03 -08:00
Sam Lantinga 05f6709617 If the viewport changes the cliprect should be updated
The clip rectangle is defined to be viewport relative, so if the viewport changes we need to update it.

Fixes https://github.com/libsdl-org/SDL/issues/9094

(cherry picked from commit d0af01e7d4)
2024-02-28 08:48:40 -08:00
Frank Praznik 9eaf7d8cc8 wayland: Remove all references to destroyed outputs from windows
The removal of a wl_output may not be accompanied by leave events for the surfaces present on it. Ensure that no window continues to hold a reference to a removed output.
2024-02-27 11:48:45 -05:00
Frank Praznik 54faea8b89 x11: Don't resize, move, or raise windows when changing the min/max size
The resize/move/raise calls when changing a window's min/max size are redundant, as the video core will call the X11_SetWindowSize() function after the change, and the resize function will perform whatever actions are necessary.
2024-02-23 14:35:56 -05:00
Sam Lantinga 69fb802a90 Fixed Visual Studio warning 4459
(cherry picked from commit d135daad5b)
2024-02-21 23:33:11 +03:00
Ryan C. Gordon 4316c5ec02
audio: fix SSE conversion of Sint8 audio to Float32.
Fixes #9099.
2024-02-21 15:16:08 -05:00
Sam Lantinga 903d888cc3 Convert mouse wheel coordinates to renderer view
Fixes https://github.com/libsdl-org/SDL/issues/9097
2024-02-20 15:44:26 -08:00
Frank Praznik f24216c2ba wayland: Don't pass null string pointers to wl_cursor_theme_get_cursor
The function calls strcmp internally without checking for a null string parameter, and calling strcmp with a null parameter is undefined behavior.
2024-02-18 12:11:29 -05:00
Ryan C. Gordon df00a7dd4c
x11: Cleaned up system cursor code to match previous Wayland change. 2024-02-16 08:37:23 -05:00
Ryan C. Gordon 827917ea60
wayland: Minor cleanup in new mouse cursor selection code.
- Move legacy name choice to a separate function, so we can `return` a
  string in one line instead of assign a variable and `break` for each item.
- Have the case statement cover SDL_NUM_SYSTEM_CURSORS, and not `default`, so
  compiler will (maybe) warn us if an enum value is added but not included here.
- Only choose a legacy name if necessary.
2024-02-16 08:22:13 -05:00
Simon McVittie 271df2fdd8 emscripten, wayland, x11: Share the table of CSS cursor names
As suggested in #8939.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-02-16 07:52:55 -05:00
Simon McVittie aa6c390bbd emscripten, wayland, x11: Map SIZEALL to "all-scroll" instead of "move"
These previously mapped SIZEALL to "move", but "move" is not guaranteed
to be a four-pointed arrow: according to the CSS spec, it's actually
intended to be a drag-and-drop cursor, analogous to "alias" and "copy".
Map it to "all-scroll" instead, as in Wayland: while this is *also* not
semantically guaranteed to be a four-pointed arrow, it is at least
*suggested* to make it a four-pointed arrow.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-02-16 07:52:55 -05:00
Ryan C. Gordon 67827c0b00 wayland: Prefer to use CSS names for cursors, falling back to X11
SDL3's Wayland code already uses the CSS names exclusively with no
fallback, but since SDL2 has historically used the older names, keeping
them as a fallback makes sense if the CSS names don't work out.

[smcv: Added commit message]
Tested-by: Simon McVittie <smcv@collabora.com>
2024-02-16 07:52:55 -05:00
Simon McVittie e2535ba547 wayland: Use CSS/freedesktop cursor name "default" as a fallback
The "left_ptr" name is an X11 thing, and there's no guarantee that
Wayland cursor themes contain it. In particular, GNOME's Adwaita theme
as of version 46.beta only contains the CSS/freedesktop names.

To test, either move one of the known cursors out of the way, or edit
the switch statement above to use a wrong name for one of them.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-02-16 07:52:55 -05:00
Ryan C. Gordon 6c0e3532fa
x11: Use XcursorLibraryLoadCursor to load system cursors when available.
Apparently this is necessary on the latest Gnome to get properly themed
cursors, vs ancient X11 standard cursors, as Gnome has dropped the old
theme names that XCreateFontCursor eventually expected to find.

Fixes #8939.

(cherry picked from commit cb9565354c)
2024-02-16 02:12:45 -05:00
Ozkan Sezer bc30fb295d don't let SDL_render.c:render_drivers[] have an empty initializer list. 2024-02-15 20:33:24 +03:00
Ozkan Sezer d0731ab9a3 Check the SDL_VIDEO_RENDER_??? macros with #if instead of #ifdef
Allows users to disable them by defining them as 0.

Closes https://github.com/libsdl-org/SDL/issues/8996
2024-02-15 02:55:02 +03:00
Frank Praznik 699cec1a8d wayland: Don't store wl_output pointers in mode driver data
They aren't used for anything, and cause problems if the video core tries to free them.

Manual backport of f9ba0e1
2024-02-14 11:12:41 -05:00
Sam Lantinga 120b8d4189 Revert "wayland: Don't initialize OpenGL when the window flags didn't specify it"
This reverts commit f522c5380c.

We don't want this change for SDL2, and we're doing further investigation for SDL3.

Fixes https://github.com/libsdl-org/SDL/issues/9035
2024-02-12 16:01:48 -08:00
Sam Lantinga 6669d04ea6 Fixed error: unused variable 'axes' [-Werror,-Wunused-variable]
(cherry picked from commit 814a94c349)
2024-02-12 11:18:41 -08:00
Sam Lantinga 971c5c2610 Explicitly retain and release NSObjects in C structures
Fixes https://github.com/libsdl-org/SDL/issues/9021
Fixes https://github.com/libsdl-org/SDL/issues/9042

(cherry picked from commit 42cdbf6b21)
2024-02-12 10:21:34 -08:00
Chris Collins de0cb94e72 Wayland: Avoid SEGV if a modifier notification comes before the keymap
(cherry picked from commit 0f81598e9f)
2024-02-10 07:04:33 -08:00
Hans-Kristian Arntzen 4ae87e215e Fix broken use of MsgWaitForMultipleObjects.
- Timeout < 0 was not handled properly
- Return value for success is WAIT_OBJECT_0 + nCount, not positive value

(cherry picked from commit 69f2bd151e)
2024-02-10 07:03:03 -08:00
Sam Lantinga 646cccede7 Guarded ElementAlreadyHandled with #ifdef ENABLE_PHYSICAL_INPUT_PROFILE (thanks @Donione!)
Fixes https://github.com/libsdl-org/SDL/issues/9033

(cherry picked from commit 3ebbf0f409)
2024-02-09 16:12:57 -08:00
Sam Lantinga 93d7b6e50c Redefine XINPUT_CAPABILITIES_EX as an SDL typedef
mingw-w64 has added this from Proton (which added this from SDL), so we need to re-define it as a local symbol to avoid conflicting with mingw-w64 headers.

Fixes https://github.com/libsdl-org/SDL/issues/9031

(cherry picked from commit b7c61569f8)
2024-02-09 01:28:15 -08:00
Sam Lantinga 40b61b81f1 Added VIDPID for OpenFFBoard wheel (thanks @groybe!)
Closes https://github.com/libsdl-org/SDL/pull/7987

(cherry picked from commit 26e947f8ea)
2024-02-07 16:35:49 -08:00
pastdue d2a3347c19 Emscripten_SetWindowFullscreen: Fix crash due to uninitialized EmscriptenFullscreenStrategy members
(cherry picked from commit 7b74e2eeb8)
2024-02-06 16:27:18 -08:00
meyraud705 a09b0b05eb Fix memory leak in SDL_UpdateSteamVirtualGamepadInfo()
(cherry picked from commit 82d89ff4fb)
2024-02-06 01:56:22 -08:00
Wohlstand a29f37c14a SDL_windowsopengl.c: WGL: Fixed null-pointer dereference crash
Fixes #8968

Fixed crash after 594a79c2f9
2024-02-03 06:18:56 -08:00
Wohlstand ca01016577 SDL_audiotypecvt.c: Fixed memory corruption when resampling S16 t F32 2024-02-03 08:20:04 -05:00
Joshua Root c53c351921 Fix SDL_mfijoystick build issues
Add missing guards around use of physicalInputProfile.

Add explicit import of Foundation which seems to be needed on some
systems to get the NSArray definition.

Add __unsafe_unretained to ObjC types in struct so the compiler doesn't
complain about that not being allowed with ARC.

Closes: #8979
(cherry picked from commit e0158f68e4)
2024-02-02 22:25:17 -08:00
Sam Lantinga fc787a41dc vulkan_metal.h: Make compatible with ObjC ARC (thanks @jmroot!)
(re)Fixes #6598

We need to remember to apply this again once we update from upstream headers.

(cherry picked from commit e67e0c5d55)
2024-02-02 18:31:14 -08:00
Sam Lantinga 8ce6fb2513 Use the exact motion associated with the warp
When Windows DPI scaling is enabled, the warp coordinates will be modified, so make sure we send exactly the coordinates that the warp attempted.

Fixes https://github.com/libsdl-org/SDL/issues/8940
2024-01-30 11:11:10 -08:00
Francisco Javier Trujillo Mata d34a7c5ed2 Fixing viewport 2024-01-29 20:42:42 -08:00
Francisco Javier Trujillo Mata 36b8438280 Fix scissor usage 2024-01-29 20:42:42 -08:00
Francisco Javier Trujillo Mata faa8fc2917 Fix color 2024-01-29 20:42:42 -08:00
Ryan C. Gordon ec25d6b1e8 aaudio: Backport headphone hotplugging support from SDL3.
Fixes #4985.
2024-01-28 00:19:48 -05:00
Sam Lantinga f0b8fee88f Added the environment variable SDL_LOGGING to control default log output
(cherry picked from commit 12bdb2b4d0)
2024-01-27 19:46:25 -08:00
Sam Lantinga 6ec3f5a28e Simplified the default log category logic
Now it's much clearer and easier to tweak the defaults

(cherry picked from commit 4fba663368)
2024-01-27 19:34:24 -08:00
Ozkan Sezer fcd1c155cc SDL_rwops.c (SDL_IsRegularFile): fix WinRT build failure due to S_ISREG 2024-01-28 02:20:00 +03:00
Ozkan Sezer 230ae797a7 SDL_RWFromFile, stdio: reject if the file is not a regular file.
Fixes https://github.com/libsdl-org/SDL/issues/8935
2024-01-28 01:44:50 +03:00
Sam Lantinga 5297596132 Report out of memory instead of crashing in SDL_LoadFile_RW()
Fixes https://github.com/libsdl-org/SDL/issues/8935
2024-01-27 12:15:43 -08:00
Sam Lantinga 332213163c Fixed N3DS build 2024-01-27 11:56:33 -08:00
Sam Lantinga 4ff3b28273 Enable text input on video initialization without popping up an on-screen keyboard
Fixes https://github.com/libsdl-org/SDL/issues/8561
2024-01-27 11:52:58 -08:00
Ryan C. Gordon f931b25f4c
wasapi: If GetDeviceBuf can't get a full buffer, go back to waiting.
Reference Issue #8924.
2024-01-26 23:25:43 -05:00
Ryan C. Gordon 1e06a3614f
wasapi: Clamp device->spec.samples to the hardware buffer size.
Reference Issue #8924.

(cherry picked from commit ad1a11164c)
2024-01-26 13:59:46 -05:00
Sam Lantinga 08caafe2f1 Improved timing accuracy of SDL_WaitEventTimeout() on Windows
We don't need to use the hack of setting a timer and waiting for a timer message, MsgWaitForMultipleObjects() will allow us to wait for input directly with a timeout.

Before this change, sleeping for 20 ms would actually sleep for around 30 ms, with this change the sleep time is pretty accurate at 20-21 ms.

(cherry picked from commit 2670eb44af)
2024-01-25 06:34:29 -08:00
Ningyuan Li 138fe3d43d mayflash adapter PS4 support
(cherry picked from commit d6ebbc2fa4)
2024-01-24 19:26:27 -08:00
Sam Lantinga b16ef14c7c Make sure we include the matching copy of vk_video headers
(cherry picked from commit 1ac9602909)
2024-01-24 09:41:48 -08:00
Sam Lantinga 0f5a815657 Update to the latest version of the Khronos headers
(cherry picked from commit fc74bf8455)
2024-01-24 09:41:48 -08:00
Sam Lantinga 9196584773 Fixed ambiguity between std::byte and byte in rpcndr.h
Fixes https://github.com/libsdl-org/SDL/issues/8911

(cherry picked from commit a71f99c71f)
2024-01-23 09:02:00 -08:00
Ozkan Sezer 48b62e2e57 make video/pandora to actually compile somehow.
no one ever maintained it for years..
2024-01-23 17:50:10 +03:00
Ozkan Sezer 9e352e61db fixes after ShowMessageBox changes:
- SDL_video.c (SDL_ShowMessageBox): remove C99'ism.
- SDL_os2video.c (OS2DIVE_bootstrap): add OS2_ShowMessageBox
- SDL_os2video.c (OS2VMAN_bootstrap): add OS2_ShowMessageBox
- SDL_DirectFB_video.c (DirectFB_bootstrap): NULL ShowMessageBox
- SDL_naclvideo.c (NACL_bootstrap): NULL ShowMessageBox
2024-01-23 04:11:20 +03:00
Ryan C. Gordon c5c0b2cb34
SDL_ShowMessageBox: Remove `#ifdef`s and respect SDL_VIDEO_DRIVER hint.
Fixes #8892.

(cherry picked from commit c88c12148d)
2024-01-22 19:44:17 -05:00
Ryan C. Gordon 1e016fd5ea aaudio: Set low-latency audio mode.
Note that apparently this has caused some weird-sounding audio
on some Android devices, so we might wrap this in a hint later,
or try to check for specific devices.

Fixes #8888.
2024-01-22 18:23:14 -05:00
Frank Praznik a8eeb181b6 wayland: Always create the backing input store, even if there is no seat
Fixes a crash if no seat was available at initialization, but still allows for one to still be created later if an input device is added.

Manual backport of 84e47b4
2024-01-22 12:52:59 -05:00
Sam Lantinga 4845027cad Updated to version 2.31.0 for development 2024-01-22 09:12:34 -08:00
Sam Lantinga ef7261bc41 Updated to version 2.29.2 for RC build 2024-01-22 08:43:05 -08:00
Sam Lantinga 12bab1c981 Fixed warning C4244: '=': conversion from 'Sint64' to 'int', possible loss of data 2024-01-22 08:39:22 -08:00
pionere 61821bd876 fix audio conversion from S16 to F32 using SSE2 2024-01-22 10:45:58 -05:00
Simon McVittie 0f9422a6a5 linux: Handle upower's UP_DEVICE_STATE_PENDING_CHARGE, PENDING_DISCHARGE
On my laptop, the battery is configured to stop charging at around 80%
most of the time, to increase the overall useful lifetime of the battery.
When in that state, upower reports UP_DEVICE_STATE_PENDING_CHARGE
(numeric value 5), which SDL previously mapped to SDL_POWERSTATE_UNKNOWN.
This made the platform_testGetPowerInfo automated test fail, because
it assumes that SDL_POWERSTATE_UNKNOWN means no battery is connected,
and does not expect to see a percentage.

Map UP_DEVICE_STATE_PENDING_CHARGE (5) to SDL_POWERSTATE_CHARGED, which
seems close enough.

Also map UP_DEVICE_STATE_PENDING_DISCHARGE (6) to
SDL_POWERSTATE_ON_BATTERY, which matches how at least GNOME presents it.

Signed-off-by: Simon McVittie <smcv@collabora.com>
(cherry picked from commit eebd5d18a2)
2024-01-22 06:34:12 -08:00
Sylvain 237535b23a
Fixed bug #8897 - SDL_BlitSurface segfault when dest_rect is null 2024-01-22 09:22:41 +01:00
yuanhecai ed5d3d9f82 Fix compilation on loongarch 2024-01-21 19:27:59 -08:00
Frank Praznik 06dd70bc8b video: Use string comparison instead of #ifdefs for driver detection
The dummy driver can be in use on these platforms, so check the actual driver name string.

Fixes the automated video tests with the dummy driver on Win32.
2024-01-21 23:44:53 +01:00
Ethan Lee b5aec14d43 gdk: Backport SDL3 MR #8844
Co-authored-by: chalonverse <sanjay12@gmail.com>
2024-01-21 13:55:17 -05:00
Sylvain f1bc5f305c
Prevent asan warning on qsort():
'src/stdlib/SDL_qsort.c:27:5: runtime error: null pointer passed as argument 1, which is declared to never be null`

(cherry picked from commit 2cd583ee13)
2024-01-20 11:26:37 +01:00
Sylvain 5d6eb4a5a5
Fixed overflow in SDL_SoftStretch() (see #8878)
(cherry picked from commit 7b02d328fa)
2024-01-20 06:39:21 +01:00
Sam Lantinga b4f99deb9e Updated to version 2.29.1 for RC build 2024-01-19 19:58:24 -08:00
Ryan C. Gordon 1e13aa2c98
androidaudio: same fix as AAudio for pausing thread when backgrounding app.
Reference Issue #8748.
2024-01-19 22:15:27 -05:00
Sam Lantinga 109bb2f17e Make sure the render target isn't bound as a resource
Fixes https://github.com/libsdl-org/SDL/issues/3380

(cherry picked from commit a73132177d)
2024-01-19 15:18:14 -08:00
Sam Lantinga f7ab765b84 Fixed crash scaling very large surfaces
Fixes https://github.com/libsdl-org/SDL/issues/8878

(cherry picked from commit 09ba55b462)
2024-01-19 13:06:57 -08:00
Ryan C. Gordon 910e040e9e
aaudio: Block the audio device thread when in the background.
Fixes #8748.
2024-01-19 15:10:43 -05:00
Sylvain Becker bb969ac747 Fixed bug #7614: Segmentation Fault in SDL_BlitSurface (#7808)
Update SDL_BlitSurface to use Intersect functions

(cherry picked from commit 3639743d89)
2024-01-19 08:53:16 -08:00
Sam Lantinga 87b5bb5840 Fixed potential overflow in software triangle rendering
(cherry picked from commit bd5d4d61ed)
2024-01-19 08:33:39 -08:00
Anonymous Maarten 472a415c8f video: move standard c, sse and lsx implementations of yuv2rgb to its own source 2024-01-18 17:06:27 -08:00
Ryan C. Gordon cc7fe8c255
x11: XI_Motion should mark the global mouse position as changed.
Otherwise we'll miss it when XWarpPointer() is used. x11vnc may do this to
manage mouse input in some circumstances, so it can be possible for _all_
mouse motion to go through this path, breaking SDL_GetGlobalMouseState().

Thanks to @chrismile for all the detective work to figure this out!

Fixes #8827.
2024-01-18 15:10:16 -05:00
Ozkan Sezer f52a12a8fe remove several instances of unnecessary emptry str "" after SDL_PRI??? 2024-01-18 17:25:56 +03:00
Sylvain 9db80adfba Fixed bug #7614: Segmentation Fault in SDL_BlitSurface
(cherry picked from commit e6c8872fdc)
2024-01-16 07:11:19 -08:00
Sylvain f3b0dc5007 Fixed bug #8301 - Software renderer draws long lines incorrectly / SDL_RENDERLINEMETHOD_GEOMETRY
(cherry picked from commit ce0e0675de)
2024-01-16 07:08:15 -08:00
Ryan C. Gordon c69e858e7a
audio: Patched to compile (mixed declarations and code). 2024-01-16 10:07:14 -05:00
Ryan C. Gordon 1e2f311811
audio: backport SDL3's audio datatype converters.
These are faster and more precise.

This did not change the Uint16 versions (as SDL3 dropped them, and honestly
no one should be using them in SDL2), nor the NEON converters (as this was
not changed in SDL3, so far).

Fixes #8786.
2024-01-16 10:04:09 -05:00
Sam Lantinga eae81ec80e Touchpads already have their right/left buttons swapped in raw input
Fixes https://github.com/libsdl-org/SDL/issues/8597

(cherry picked from commit cf5e0637b5)
2024-01-15 19:46:31 -08:00
Sam Lantinga f641d91f67 Restore window minimum and maximum size if it is recreated
Fixes https://github.com/libsdl-org/SDL/issues/8805

(cherry picked from commit fb2d7ed83e)
2024-01-15 16:35:03 -08:00
Susko3 38d11e5cc6 Add missing `(void)` in functions params 2024-01-13 11:45:44 -08:00
Susko3 bbe4d693eb 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.

(cherry picked from commit d747daf03d)
2024-01-13 11:44:43 -08:00
Sam Lantinga b6e97d9ff0 Fixed Xcode warnings 2024-01-13 08:15:41 -08:00
Sylvain 347b6cdcb6
Prevent ASAN warning:
like SDL_triangle.c:305:30: runtime error: left shift of negative value -672
(even if the value was correctly computed)

(cherry picked from commit 4033a0a83b)
2024-01-13 13:58:30 +01:00
Alberto Mardegan 66209135df render: Fix line clipping with translated viewports
The previous code was working incorrectly on viewports not having the
top left corner on the origin: even in those cases we only need to look
at the width and height of the viewport, because the drawing coordinates
are translated.

Fixes #8828
2024-01-11 14:36:55 -08:00
Frank Praznik 9fe09950f1 wayland: Raise the frame throttle limit
Raise the minimum frame throttle limit to 1/3 the refresh rate (or 20hz) to prevent titles from timing out when occluded.
2024-01-10 17:06:47 -05:00
Caleb Cornett 71cd1fa595 Fix compile error with XInputOnGameInput.h
(cherry picked from commit d766f68cb3)
2024-01-10 12:54:00 -08:00
Simon McVittie 1634a4cc30 test: Use SDL_CreateRGBSurfaceWithFormatFrom for SDLTest_ImageFace
Unlike the test images in the previous commit, this one is
4-bytes-per-pixel RGBA32, so the masks used here appear to be correct
for both endiannesses. Converting it to SDL_PIXELFORMAT_RGBA32 just
makes it more concise.

Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-01-10 06:09:40 -08:00
Simon McVittie feaf52dba6 test: Fix encoding declaration for RGB24 test images
All of these test images are provided as an octal dump of
3-bytes-per-pixel data with red, green and blue bytes in that order,
referred to as RGB24 in SDL's taxonomy. However, the call to
SDL_CreateRGBSurfaceFrom() used masks that would have been appropriate
for RGBA32 data.

On little-endian platforms, the test images loaded as intended anyway,
because SDL does not actually check all four masks before deciding to
use RGB24 (it only looks at the red mask), and the red channel happens to
be in the 0x000000FF position for both RGB24 and RGBA32 on little-endian.

Unfortunately, on big-endian platforms, the required masks are not the
same and the call failed with "Unknown pixel format". As far as I can
tell, this means testautomation_surface has never succeeded on big-endian
platforms, but presumably nobody has tried to run it on such platforms
until now.

In the SDL 3 branch, this was fixed as a side-effect of commit
932f6134 "Remove mask versions of SDL_CreateRGBSurface* #6701  (#6711)",
which I have used as a reference to confirm that RGB24 is correct.

Resolves: https://github.com/libsdl-org/SDL/issues/8817
Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-01-10 06:09:40 -08:00
Sam Lantinga 970ed36de5 Only force X11 if SDL_VIDEO_DRIVER_X11 is available 2024-01-09 11:56:26 -08:00
Sam Lantinga bd2f1e9ea6 Use the X11 driver if the application uses X11-based graphics frameworks
Fixes https://github.com/libsdl-org/SDL/issues/8812
2024-01-09 11:24:10 -08:00
Simon McVittie 64754f3a2a test: When listing test-cases, say which ones are disabled
When a test has been disabled because it's known not to work reliably
or it's a test for unimplemented functionality, we probably don't want
to encourage developers and testers to run it and report its failures
as a bug.

Helps: #8798, #8800
Signed-off-by: Simon McVittie <smcv@collabora.com>
2024-01-08 09:50:11 -08:00
Sam Lantinga 5e12e4b813 Updated documentation for SDL_HINT_SHUTDOWN_DBUS_ON_QUIT
(cherry picked from commit 3deefa6b43)
2024-01-07 14:24:56 -08:00
Semphris 8c4e4d57b3 Add hint to make SDL handle dbus_shutdown()
(cherry picked from commit 2348e8b6a2)
2024-01-07 14:23:57 -08:00
Sam Lantinga ca3b8fe91d Fixed build 2024-01-06 08:33:30 -08:00
Sam Lantinga e1c3dcb403 Don't try to send the PS third-party feature request to the Logitech G815 keyboard
Fixes https://github.com/libsdl-org/SDL/issues/8373

(cherry picked from commit d3daba791a)
2024-01-06 08:30:20 -08:00
Sam Lantinga c309546e8c Fixed warning: no previous prototype for function 'SDL_GetGameControllerTypeFromString' [-Wmissing-prototypes] 2024-01-06 08:23:55 -08:00
Sam Lantinga 0e913a22db Renamed ShowTextInput/HideTextInput to ShowScreenKeyboard/HideScreenKeyboard on Android
This better reflects the actual implementation and makes SDL_HINT_ENABLE_SCREEN_KEYBOARD work on Android.

Fixes https://github.com/libsdl-org/SDL/issues/8652

(cherry picked from commit 014a63b4b5)
2024-01-06 08:23:11 -08:00
Sam Lantinga be29ca0189 Use the application requested size to determine automatic orientation on iOS
Fixes https://github.com/libsdl-org/SDL/issues/8201

(cherry picked from commit e3b5999bb4)
2024-01-06 07:39:25 -08:00
Sam Lantinga f892ae10d6 updateKeyboard should use the SDL window's screen instead of the view window's screen, which may be nil.
Fixes https://github.com/libsdl-org/SDL/issues/8200

(cherry picked from commit 3a9a52fe6c)
2024-01-06 07:37:14 -08:00
Sam Lantinga 674e894574 Added mapping for the RX Gamepad, e.g. Pandora Box 7
Fixes https://github.com/libsdl-org/SDL/issues/8217

(cherry picked from commit e100992c17)
2024-01-06 06:19:30 -08:00
jfmu eb1b9b418c SDL_audio.c: Fix crash if we switch from direct output to streaming, and if the buffersizes change. 2024-01-04 19:41:38 -05:00
Ozkan Sezer 7b4f1ef01b yuv2rgb: warning fixes and comment out unused code
(cherry picked from commit 46de6241d7)
(cherry picked from commit 0bd77a5b93)
(cherry picked from commit f341c06552)
(cherry picked from commit 4d2f9f3a32)
(cherry picked from commit 06f8f9a891)
(cherry picked from commit 0c4cb3d153)
(cherry picked from commit 0dad56354c)
2024-01-03 09:07:50 -05:00
Vicki Pfau 41bf6b5a51 Add basic rumble support to Steam Deck
(cherry picked from commit bec1b8f849)
2024-01-01 21:48:41 -08:00
Sam Lantinga 0fc3574464 Updated copyright for 2024 2024-01-01 13:19:49 -08:00
Reilly Brogan 8030e7546a Fix static build with libdecor 0.2.0
(cherry picked from commit 4ce935b910)
2023-12-26 16:30:32 -08:00
Reilly Brogan 5dfb0c19c8 Fix static build with libdrm 2.4.116 2023-12-26 16:29:01 -08:00
Alynne 2afbb5713c Add Access Controller
(cherry picked from commit cae657140c)
2023-12-26 09:58:47 -08:00
Tyson Whitehead 3b1e0e163b 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 16:02:38 -08:00
Sam Lantinga 857e5b08c3 Fixed trying to add a game controller mapping for the accelerometer on iOS
Fixes https://github.com/libsdl-org/SDL/issues/8716

(cherry picked from commit 0e5ea3cc4b)
2023-12-24 11:22:22 -08:00
Sam Lantinga aeda6a8e6f 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

(cherry picked from commit c3d84c3342)
2023-12-24 08:23:36 -08:00
Julian Uy 884c21c565 Use common generic syscond for platforms with no cond implementation 2023-12-24 06:35:59 -08:00
Julian Uy 557d8e2f24 PS2 use WaitSemaEx for waiting for semaphore with timeout 2023-12-24 06:34:45 -08:00
Sylvain 3a8032f491 Make sure the string is terminated, fixed invalid read in SDL_PrivateGameControllerParseControllerConfigString()
(cherry picked from commit 312f98c2a1)
2023-12-23 12:58:54 -08:00
Lukas Senionis e7c4575719 Use crc16 return value when calculating GUID
Fixes the regression introduced by 919cd56b20

(cherry picked from commit a2e05480d6)
2023-12-21 07:00:57 -08:00
Sam Lantinga 919cd56b20 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

(cherry picked from commit 1f1ee6f77c)
2023-12-20 19:25:35 -08:00
Ozkan Sezer d76097dc5e fix os/2 and watcom builds after commit 7bb0e839a6 2023-12-21 01:11:24 +03:00
Sam Lantinga 7bb0e839a6 Added Steam Input API support for game controllers
Added support for getting the real controller info, as well as the function SDL_GameControllerGetSteamHandle() to get the Steam Input API handle, from the virtual gamepads provided by Steam.

Also added an event SDL_CONTROLLERSTEAMHANDLEUPDATED which is triggered when a controller's API handle changes, e.g. the controllers were reassigned slots in the Steam UI.

(cherry picked from commit c981a597dc)
2023-12-20 13:29:57 -08:00
Vicki Pfau 5240071b1c Sync more Steam Controller header definitions for the Steam Deck
(cherry picked from commit a8f4f40d08)
2023-12-20 06:50:54 -08:00
Sam Lantinga 91f8b4dea2 Added a controller name for the Steam virtual gamepad
(cherry picked from commit 4d5949dcf6)
2023-12-17 10:08:17 -08:00
Sam Lantinga 2aadef022e Pass through the name of the controller for the XInput mapping
(cherry picked from commit e6d88b254add377743de7bf33a7a4fec8cec79c3)
2023-12-17 09:32:54 -08:00
Dimitriy Ryazantcev 7391cd34da XInput: Use XInputGetCapabilitiesEx instead of fragile GuessXInputDevice
XInputGetCapabilitiesEx (ordinal 108) is available in XInput 1.4 that is shipped with Windows 8 and newer.

(cherry picked from commit 08a7ca4d53)
2023-12-17 09:32:43 -08:00
Susko3 cfecc569b5 Differentiate between Windows Ink (pen) and regular touch input
SDL2 backport of https://github.com/libsdl-org/SDL/pull/5926
2023-12-16 21:41:22 -08:00
Frank Praznik 867d8643d7 wayland: Handle mouse focus when receiving touch events
Compositors may switch from mouse to touch mode when a touch event is received, causing a pointer leave event and subsequent loss of mouse focus.

Don't relinquish mouse focus on surfaces with active touch events. If there are active touch events when pointer focus is lost, the keyboard focus is used as a fallback for relinquishing mouse focus: if, in this case, the keyboard focus is then lost and there are no active touches, mouse focus is lost, and if all touches are raised and there is no keyboard or pointer focus, then the window loses mouse focus.

(cherry picked from commit 21879faf48)
2023-12-14 14:33:18 -05:00
Sam Lantinga 239b5278bf Revert "Back out Steam virtual gamepad changes"
This reverts commit f0e7f3e7e5.
2023-12-13 09:46:10 -08:00
Max Maisel 33588662ef Refactor away some additional integer types. 2023-12-12 12:52:04 -08:00
Max Maisel bed789794d Add new steam deck HIDAPI controller to controller database. 2023-12-12 12:52:04 -08:00
Max Maisel 0dbe9022fc Disable lizard mode while steam deck HID device is opened. 2023-12-12 12:52:04 -08:00
Max Maisel a6b9d987e9 Translate steam deck HID reports to SDL events. 2023-12-12 12:52:04 -08:00
Max Maisel 5718ba253f Implement steam deck HIDAPI initialization. 2023-12-12 12:52:04 -08:00
Max Maisel e7f03de468 Add steam deck detection and HIDAPI driver scaffold. 2023-12-12 12:52:04 -08:00
Dimitriy Ryazantcev 33843b0933 Use existing XUSB driver software PID 0x02a1 instead of PID 0x02fe
0x02fe is actually PID of Xbox Wireless Adapter for Windows 10 (Model 1790) and creates confusion.

Here is USB descriptor dump: https://github.com/DJm00n/ControllersInfo/blob/master/xboxone/DescriptorDump_Adapter%20(Xbox%20Wireless%20Adapter%20for%20Windows).txt

(cherry picked from commit c790572674)
2023-12-11 11:49:28 -08:00
Sam Lantinga 79a8e8cf04 Make built-in joystick device lists extendable by using hints
Fixes https://github.com/libsdl-org/SDL/issues/8595

(cherry picked from commit 5173b0c2cc)
2023-12-10 22:52:12 -08:00
Sam Lantinga 6526c4d0fc Refactor VIDPID list loading code
(cherry picked from commit d91e96e7f5)
2023-12-10 09:02:56 -08:00
Sam Lantinga f0e7f3e7e5 Back out Steam virtual gamepad changes
We are planning a different approach to handle these
2023-12-10 08:38:20 -08:00
Sam Lantinga ddac844034 Fixed build 2023-12-09 21:44:12 -08:00
Sam Lantinga dd28637947 Use the Steam virtual gamepad slot as the gamepad player index
(cherry picked from commit 7529d25b2b)
2023-12-09 21:01:08 -08:00
Sam Lantinga 5b26d4e0ca Sort Steam virtual gamepads by Steam controller slot
This makes sure that games launched by Steam see the first controller first, and the controllers in the game match up with the controllers in the Steam UI.

Fixes https://github.com/libsdl-org/SDL/issues/8672

(cherry picked from commit 17723381da)
2023-12-09 20:35:33 -08:00
Ethan Lee 757c984ddb gamecontroller: Backport 3.0 'type:' field to 2.0 2023-11-30 14:42:56 -08:00
Ryan C. Gordon 61cd57d378 cocoa: Resync modifier keypressed on NSEventTypeFlagsChanged event.
Fixes #7507.

(cherry picked from commit 70b65d4170)
2023-11-29 21:40:30 -05:00
Sam Lantinga 8f14dc6998 Corrected comment
(cherry picked from commit 45938bbfa5)
2023-11-28 12:30:10 -08:00
zoeyjodon 3381828cc6 Fix 3DS Analog Values (#8581)
(cherry picked from commit 059e550e98)
2023-11-28 12:29:55 -08:00
Sam Lantinga 546bab0a8c Fixed the GameCube HIDAPI controller mapping
Fixes https://github.com/libsdl-org/SDL/issues/8617
Closes https://github.com/libsdl-org/SDL/pull/8623
Closes https://github.com/libsdl-org/SDL/pull/7930
2023-11-28 10:26:58 -08:00
Sam Lantinga 98ee4a5292 Removed HIDAPI controller mappings
These are already provided internally by SDL

(cherry picked from commit dd984dcd9f)
2023-11-28 10:11:56 -08:00
Ryan C. Gordon d42fa25a9e test: SDLTest_PrintEvent now reports key event mod state. 2023-11-28 13:07:56 -05:00
Ryan C. Gordon 7d25a443c4 cocoa: Use `-[NSApplicationDelegate applicationSupportsSecureRestorableState]`.
This prevents warnings at startup on macOS Sonoma (14.0).
2023-11-28 12:24:33 -05:00
Ryan C. Gordon 3fbaf737ef test: Removed unnecessary line added by copy/paste error. 2023-11-28 12:11:13 -05:00
Ryan C. Gordon 258849c9bc test: testwm2 now displays keyboard mod state. 2023-11-28 12:05:02 -05:00
Jake S. Del Mastro 594a79c2f9
Set framebuffer_srgb_capable to the actual value obtained (#8634) 2023-11-28 05:48:19 -08:00
Sam Lantinga 8d47e3bb82 Added support for the NACON Revolution 5 Pro controller
(cherry picked from commit f0e47f8ee0)
2023-11-27 12:12:25 -08:00
Ryan C. Gordon 4339647d90
render: Clip lines before Bresenham algorithm generates points.
Otherwise, a massive line might generate gigabytes worth of points to render,
which the backend would simply throw away anyhow.

Fixes #8113.
2023-11-24 19:33:04 -05:00
Ryan C. Gordon a391dd5fef
rect: Avoid numeric overflow on massive lines in SDL_IntersectRectAndLine.
Reference Issue #8301.
Reference Issue #8113.
2023-11-24 19:33:04 -05:00
Ryan C. Gordon e9b4869372
opengl: Creating a texture trashes the cached `texturing` state, fix it.
Reference Issue #7194.
2023-11-23 20:00:01 -05:00