Commit Graph

12406 Commits

Author SHA1 Message Date
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
Romans-I-XVI
4c3b8b2b93 Fixed reference path for buildshaders.bat
This makes it so the build still works when project is referenced by another solution
2024-04-15 03:23:33 -10:00
Ryan C. Gordon
e75d72670f include: Fixes to make the headers friendly with the latest wikiheaders. 2024-04-11 01:17:27 -04:00
Anonymous Maarten
9216b7a5ee stdinc: modify default alloca prototype
For compatibilty with TinyCC.

Backport of 06758685a5
2024-04-10 10:05:08 +02: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
Ryan C. Gordon
02246aaeb9 wikiheaders.pl: Report a function's header file name.
(cherry picked from commit e055a9fc2d)
2024-03-31 12:58:19 -04:00
Ozkan Sezer
4d91f0e796 SDL_stdinc.h: Android passes sizeof(ENUM) == sizeof(int) assertion
Reference issue: https://github.com/libsdl-org/SDL/issues/9392 .

(cherry picked from commit 6cf71ca9a9)
2024-03-28 21:10:00 +03:00
Ryan C. Gordon
0d8ce4a761 psp: Fixed building with pspdev when not using CMake.
(psp-cmake defines `__PSP__` on the command line, but the compiler itself
only defines `__psp__` and some variations.

Fixes #9378.
2024-03-28 09:47:28 -04:00
Sam Lantinga
5fff9bc1e3 Don't fail joystick initialization if udev isn't available 2024-03-25 11:45:41 -07:00
Ozkan Sezer
358a80a473 remove non-existent vulkan.hpp and vulkan_mir.h from Xcode project 2024-03-25 21:23:24 +03:00
Anonymous Maarten
eb185e8d88 VisualC: remove vulkan.hpp 2024-03-25 18:04:40 +01: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
6ba3e56538 SDL_GetWindowSurface: update documentation re: surface->pixels 2024-03-24 11:33:32 -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
Sylvain
763d768f7d Fix bug #9331 - SDL3 Android crash getVibrator() == null
(cherry picked from commit 1855ce68af)
2024-03-23 16:32:00 -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
59d4a39456 Add checks for memfd_create() and posix_fallocate() to the autotools build 2024-03-13 11:23:43 -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
Anonymous Maarten
3184936950 cmake: we only need a C++ compiler for Android, Haiku and UWP 2024-03-11 01:26:13 +01: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
75c5cff0bf Fixed "${folder^}Activity: bad substitution" with bash 3.2 on macOS
(cherry picked from commit c36f773eb4)
2024-03-05 13:47:59 -08:00
Sam Lantinga
a842bc29fa Uppercase the first letter of the class name to match Java conventions
Fixes https://github.com/libsdl-org/SDL/issues/8930

(cherry picked from commit 4189edaeb7)
2024-03-03 16:57:16 -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