Commit Graph

22207 Commits

Author SHA1 Message Date
bubbleguuum
f1f4d0d229 Fix opening pipewire device blocking indefinitely if no device
If wireplumber is not running or if there is no audio device,
PIPEWIRE_OpenDevice could remain stuck indefinityely on PIPEWIRE_pw_thread_loop_wait
because priv->stream_init_status is never equal to PW_READY_FLAG_ALL_PREOPEN_BITS.
Use PIPEWIRE_pw_thread_loop_timed_wait instead with a 2 seconds timeout and bail
out with an error on timeout.
A 2 seconds timeout seems plenty enough: in my observations, when there is an audio device,
the wait for the device to be ready is just a few milliseconds.
2026-06-25 09:41:15 -04:00
SDL Wiki Bot
0fa422231d Sync SDL3 wiki -> header
[ci skip]
2026-06-24 19:48:34 +00:00
Sam Lantinga
089b862732 Added SDL_HINT_WINDOWS_RAW_MOUSE_NOLEGACY 2026-06-24 12:45:36 -07:00
Bartłomiej Dach
9acf54142e iOS: Fix crash on pinch gesture
Related: 65091012b4

After the aforementioned commit, pinching in any iOS app using SDL
crashes with

	*** Terminating app due to uncaught exception 'NSRangeException', reason: '-[UIPinchGestureRecognizer locationOfTouch:inView:]: index (1) beyond bounds (1).'
	*** First throw call stack:
	(0x19d31a23c 0x199de9224 0x19d37fec4 0x1a3f99bf0 0x1a3fa3c68 0x103277370 0x1a33b8b7c 0x1a33b848c 0x1a33b8238 0x1a2efc9a4 0x1a2ec1310 0x1a8ab8754 0x1a8af6c1c 0x1a8abc324 0x1a8ac79f4 0x1a2f010e8 0x1a2ee9550 0x1a2efd638 0x1a2eea040 0x1a2f0318c 0x1a2eecd48 0x1a2f062a8 0x1a2f03834 0x2b210f56c 0x19d2a5358 0x19d2a52cc 0x19d26a5a8 0x19d2341a0 0x19d23354c 0x1032bcdd8 0x1032ee2a0 0x1032ee3fc 0x1032ee360 0x102280644 0x10228042c 0x1033cd0cc 0x1032a8198 0x19a61f5dc 0x19d273960 0x19d273658 0x19d2731cc 0x19d234584 0x19d23354c 0x24299f498 0x1a2f2c244 0x1a2e97158 0x1032a5780 0x102280030 0x199e41c1c)
	libc++abi: terminating due to uncaught exception of type NSException

As it turns out, `UIPinchGestureRecognizer` does not guarantee the
presence of two touches throughout the entire duration of the pinch.
When the user is releasing the touches that constitute the pinch
gesture, more often than not they will release one touch before the
other. When this happens, `UIPinchGestureRecognizer` *does not terminate
the pinch*, but continues updating it, only with one touch remaining in
the gesture. The gesture is only marked concluded when the user releases
*both* touches.

To prevent the crash, check that the second touch is actually available
via the `numberOfTouches` property. If it is not, avoid emitting
`SDL_EVENT_PINCH_UPDATE` events to prevent sending unexpected payloads
downstream; there is no second touch to use anymore to calculate
`(focus|span)_(x|y)`.
2026-06-24 10:28:07 -07:00
Bartłomiej Dach
df65a2385d Fix Xcode project not building due to missing header
Both `SDL3/SDL.h` and `SDL3/SDL_events.h` attempt to `#include
<SDL3/SDL_notification.h>` and that header was not added to Xcode,
leading to compilation failures.
2026-06-24 10:28:07 -07:00
Ryan C. Gordon
179e66f1fe docs: Improved SDL_CommonEvent documentation. 2026-06-24 13:15:53 -04:00
SDL Wiki Bot
135a9457f3 Sync SDL3 wiki -> header
[ci skip]
2026-06-23 18:34:01 +00:00
Frank Praznik
5471f4c3de notification: Fix old function names in documentation 2026-06-23 14:31:01 -04:00
Frank Praznik
a7ade74cf1 notification: Check the icon string before duplicating
Fixes #15877
2026-06-23 14:28:17 -04:00
Ryan C. Gordon
0b692f64b0 docs: warn not to destroy an SDL_AudioStream during its callback.
Fixes #15871.
2026-06-23 13:49:46 -04:00
Sam Lantinga
7be5990089 Removed redundant check for VK_SUCCESS
Fixes https://github.com/libsdl-org/SDL/issues/15157
2026-06-23 08:59:16 -07:00
Sam Lantinga
284afc2c9a Set SDL_PROP_TEXTURE_GPU_TEXTURE_V_POINTER to the correct texture
Fixes https://github.com/libsdl-org/SDL/issues/15157
2026-06-23 08:57:49 -07:00
Frank Praznik
e26370810b gpu/vulkan renderer: Reconfigure the window on renderer creation if it has the OpenGL flag
In some cases, conflicts can occur at the platform or driver level if a window initially configured for OpenGL is then used with a Vulkan-based renderer. Try to reconfigure or recreate the window in the unlikely event that it has the OpenGL flag set when initializing the Vulkan or GPU renderer to remove any platform or driver-specific OpenGL objects and properties.
2026-06-23 11:03:05 -04:00
Sam Lantinga
a45ef5dc64 Added RIDEV_NOLEGACY to improve performance in mouse relative mode (thanks @whrvt!)
This change also makes it so relative mode doesn't kick in until the mouse enters the window client area. This prevents relative mode from kicking in while clicking and dragging on the title bar, etc.
2026-06-23 07:10:25 -07:00
SDL Wiki Bot
e300b87e35 Sync SDL3 wiki -> header
[ci skip]
2026-06-23 07:25:14 +00:00
SDL Wiki Bot
1a21db244c Sync SDL3 wiki -> header
[ci skip]
2026-06-23 02:18:50 +00:00
Ryan C. Gordon
4f778d56fd .wikiheaders-options: Fix Notification category. 2026-06-22 22:17:12 -04:00
Ryan C. Gordon
c1918f0817 docs: SDL_Locale is a struct, not a function. 2026-06-22 22:13:21 -04:00
Sam Lantinga
07ecc125cf Added SDL_PIXELFORMAT_P408 and SDL_PIXELFORMAT_P416 2026-06-22 17:01:54 -05:00
SDL Wiki Bot
0bb539314d Sync SDL3 wiki -> header
[ci skip]
2026-06-22 03:32:20 +00:00
Brent Page
65091012b4 Add more information for pinch gestures on mobile (#15092) 2026-06-21 20:30:50 -07:00
SDL Wiki Bot
941dda1ccd Sync SDL3 wiki -> header
[ci skip]
2026-06-21 18:52:43 +00:00
Semphriss
e52dbf4442 Add basic Ubuntu Touch functions #12543
This adds support for:
* System theme
* Sandbox detection
* Device form factor detection

Many things aren't properly supported yet, but changes and upgrades will happen on the Ubuntu Touch side, so SDL should automatically support more Ubuntu Touch features as time goes.
2026-06-21 11:51:15 -07:00
ripdog
35ebc3db89 Android: honor suggested filename in ShowSaveFileDialog 2026-06-21 11:09:36 -05:00
Christian Semmler
a0b7ea0304 timer: drop unused mach_base_info on Apple
The Apple counter uses clock_gettime_nsec_np(CLOCK_UPTIME_RAW) and the
frequency is SDL_NS_PER_SECOND, so the mach timebase is no longer used.
2026-06-21 10:44:37 -05:00
SDL Wiki Bot
da8ee4d5cc Sync SDL3 wiki -> header
[ci skip]
2026-06-21 15:34:46 +00:00
Semphriss
d474769878 Detect device form factor (#12584) 2026-06-21 08:33:13 -07:00
klirktag
5317703567 Android: hide system bars via WindowInsetsController on API 30+
The immersive-fullscreen code hid the status and navigation bars with the
deprecated View.setSystemUiVisibility() flags plus FLAG_FULLSCREEN. On
Android 15+ (API 35), edge-to-edge is enforced for apps targeting SDK 35+
and those flags are ignored, so the bars never hide (e.g. on a Samsung
S25). Android 14 and below still honour them, which is why older devices
were unaffected.

Hide/show the system bars with WindowInsetsController on API 30+ (using
BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE for sticky-immersive), keeping the
legacy setSystemUiVisibility() path for API < 30. The minimum supported
version is unchanged.

(cherry picked from commit a442367706)
2026-06-21 08:26:48 -07:00
Caleb Cornett
3561f81400 gpu: Metal fence fixes 2026-06-21 10:08:01 -05:00
Christian Semmler
e575093c83 Fix Apple performance frequency to match nanosecond counter
The counter returns ns via clock_gettime_nsec_np, so the frequency must be SDL_NS_PER_SECOND.
2026-06-20 23:01:33 -04:00
Gabriel Ford
49879ba0d6 free capacitive sensors on joystick close
Fixes: #15856
2026-06-19 20:05:28 -05:00
Ryan C. Gordon
d7e25c92c0 examples/input/03-gamepad-polling: Render axes in blue.
It's easier to see against white than yellow was.
2026-06-19 14:35:10 -04:00
Ryan C. Gordon
3a1cfbc147 main: If SDL_MAIN_CALLBACK_RATE="waitevent", have at least one iteration run.
This way apps can at least draw an initial image to their windows before going
into a deep, blocking wait for user interaction.

Fixes #15027.
2026-06-19 14:14:13 -04:00
Ryan C. Gordon
e63b247738 io_uring: Annotate for ThreadSanitizer, since the ring is serializing access.
This doesn't _suppress_ the warnings, it annotates our memory access pattern
so ThreadSanitizer knows that threads aren't in conflict, since TSan doesn't
know about io_uring's mechanisms.

Fixes #15083.
2026-06-19 13:42:10 -04:00
Frank Praznik
b3f8367134 wayland: Make external window reconfiguration more robust
External window surfaces can't be destroyed and recreated, so try our best to reconfigure them when switching between GL profiles, or between GL and Vulkan.
2026-06-19 13:07:16 -04:00
Frank Praznik
4c28a67cd5 gles: Try to reconfigure the window instead of recreating it
SDL_ReconfigureWindow will fall back to recreation if necessary.
2026-06-19 10:25:39 -04:00
Ryan C. Gordon
f8dc19e65a examples/storage/01-user: Set up for web builds. 2026-06-19 00:10:56 -04:00
Ethan Lee
e19a6544a2 examples: Add an example for SDL_Storage user data 2026-06-18 20:44:15 -04:00
Ryan C. Gordon
d5dca1ec3d dos: Don't do parameter validation in SDL_SYS_GetPrefPath.
The higher level did it already.
2026-06-18 13:46:13 -04:00
Ryan C. Gordon
7134ed5c1c wikiheaders: Fix links in manpage generation.
Fixes #15665.
2026-06-18 13:46:13 -04:00
Frank Praznik
06795b00ad wayland: Attach EGL objects to custom and external surfaces during reconfiguration
They are required when using EGL with an external surface.
2026-06-18 10:56:20 -04:00
Frank Praznik
dbfddb6409 wayland: External windows are never hidden
Needed for the GPU renderer to function properly.
2026-06-18 10:56:20 -04:00
Anonymous Maarten
9b230dfb36 cmake: add SDL_LIBUDEV_SHARED option 2026-06-18 03:47:07 -07:00
Christmas-Missionary
c3e29282b3 updated Raw Mouse Input section in docs 2026-06-18 00:45:49 -04:00
Christmas-Missionary
2536a22012 Enforce the minimum version of macOS to be 10.12
- clock_gettime_nsec_np is not defined until 10.12
2026-06-18 00:45:49 -04:00
Christmas-Missionary
225001b53b replaced mach_absolute_time()
- Addresses issue #15115
- mach_absolute_time can be misused for fingerprinting. This is bad.
- Apple docs prefer clock_gettime_nsec_np(CLOCK_UPTIME_RAW) in time.h
- Since HAVE_NANOSLEEP is defined, time.h is included
2026-06-18 00:45:49 -04:00
Vicki Pfau
ca67f19c8f Fix discrete Joy-Con mappings on Linux 2026-06-17 20:49:28 -07:00
SDL Wiki Bot
ae429cf5ee Sync SDL3 wiki -> header
[ci skip]
2026-06-17 23:50:18 +00:00
Sam Lantinga
c9b6581210 Added SDL_HINT_ENABLE_STEAM_SCREEN_KEYBOARD 2026-06-17 16:48:54 -07:00
stahta01
3686cbdca2 cmake: correctly report SDL_LEAN_AND_MEAN state at end of configuration 2026-06-17 20:35:37 +02:00