Commit Graph

5027 Commits

Author SHA1 Message Date
Petar Popovic
53c799a7a9 SDL_SetWindowShape(): Remove shape when argument is NULL 2026-03-26 10:42:12 -07:00
Green Sky
998159fa95 video: add more direct mjpeg to yuv conversions 2026-03-24 08:59:50 -07:00
Sam Lantinga
299ed51984 Added an internal hint to set OpenVR overlay flags 2026-03-23 15:23:38 -07:00
William Horvath
983e984afc windowsrawinput: Unregister/register raw input devices as necessary.
The thread is still created once and only shut down on WIN_VideoQuit,
but the thread will unregister the devices when they're disabled to avoid
wasting time processing raw input that won't be appreciated by anyone.

This also allows RIDEV_NOLEGACY to be set on the devices, otherwise they
swallow up the WM_MOUSE* events that would be going to the main thread
when relative mode is disabled. That's out of scope for this change, though.
2026-03-22 17:57:02 -07:00
William Horvath
706e7f9043 windowsrawinput: Fix incorrect INVALID_HANDLE_VALUE checks.
CreateEvent/CreateThread return NULL on failure.
2026-03-22 17:57:02 -07:00
William Horvath
00f9a25879 windowsrawinput: Add missing WIN_SetRawKeyboardFlag_Inputsink stub. 2026-03-22 17:57:02 -07:00
Edgar J San Martin
ad91384704 Base GCMouse raw input implementation
Fix duplicate button/scroll events when GCMouse active

Fix duplicate events and add thread-safe atomic for GCMouse

Fix GCMouse relative mode sync when connected after mode enabled

Respect SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE in GCMouse handler

Fix variable shadowing in GCMouse motion handler
2026-03-22 08:25:22 -07:00
sunshineinabox
6b060435e3 egl: Handle error when binding EGL API in context creation 2026-03-18 13:47:27 -04:00
Andrei Alexeyev
ff543723c4 Fix SDL_HINT_OPENGL_ES_DRIVER interaction with SDL_HINT_OPENGL_LIBRARY for x11 and windows
If SDL_HINT_OPENGL_ES_DRIVER is enabled and a GLES context is requested,
don't try to load the WGL/GLX library. Doing so may fail, because
SDL_HINT_OPENGL_LIBRARY may have been set to a custom libGLESv2 (e.g.
ANGLE). This effectively restores the SDL2 behavior.

Other video drivers shouldn't be affected, because they always use EGL
for GLES.

Incidentally, this patch also fixes a missing GL_GetEGLSurface callback
in the X11 fallback path.
2026-03-18 12:44:48 -04:00
Frank Praznik
62af66f14a x11: More XInput2 #define cleanups
Fixes building on very old XInput2 versions (pre-2012) without smooth scrolling and multitouch.
2026-03-18 11:25:07 -04:00
Sam Lantinga
b9c227e07d Make changing raw input mode on Windows a very fast operation (take 2)
The first approach had the drawback that it accumulated handles while raw input was paused, eventually crashing the application.

Now we'll keep reading raw events from the queue, we just won't deliver them to  the application.
2026-03-17 12:56:23 -07:00
Frank Praznik
d88f76caac x11: Fix building when XInput2 is not available 2026-03-17 15:31:48 -04:00
Sam Lantinga
c717a20ec8 Fixed initial window size and placement on visionOS 2026-03-17 12:25:13 -07:00
Frank Praznik
3d21b3bc68 wayland: Scale custom cursors with the pointer scale
When emulating display modes or using display scaling, custom cursors need to be scaled, or they can appear too large or small relative to the window size.
2026-03-17 13:24:32 -04:00
Sam Lantinga
43e90c7b1c Make changing raw input mode on Windows a very fast operation
Previously we would spin up and shut down a thread every time we changed raw input mode, which can take several ms. Now we'll just put the raw input thread to sleep when disabling raw input and wake it up when enabling raw input.
2026-03-16 17:19:47 -07:00
Sam Lantinga
1d081314a8 Fixed error when SDL_LoadSurface_IO() is passed a NULL src 2026-03-15 13:17:11 -07:00
Cameron Gutman
5f92aac095 windows: Fix Print Screen key capture during keyboard grab 2026-03-15 15:12:29 -05:00
Frank Praznik
8d55fbe4d2 wayland: Fix the state check when resizing a hidden window
The floating state is only set after the first configuration event arrives, so size changes before the window was initially shown could be dropped. Use the flags instead.
2026-03-15 16:03:52 -04:00
Frank Praznik
566448d95a wayland: Eliminate redundant keyboard and mouse removals
The SDL keyboard and mouse will be removed when destroying the seat, so there is no need to preemptively remove them.
2026-03-13 22:42:09 -04:00
Frank Praznik
41bce956f0 wayland: Send display moved events on display geometry changes
Updates are sent to outputs, however, dispatching the moved event was overlooked and never implemented.
2026-03-13 13:52:02 -04:00
Frank Praznik
98d23660bc wayland: Prevent overlapping outputs when using display scaling
When using the display scaling mode, scaled outputs would overlap, as the origins are in scaled points, while the width and height are in pixels. Use a simple algorithm to push the overlapping rectangles apart, so they do not overlap. This may end up leaving gaps in complex layouts (which are already somewhat mangled from mixing coordinate systems), but it works well enough in most cases.
2026-03-13 13:52:02 -04:00
Frank Praznik
18219d5b53 wayland: Prevent the window from errantly growing when scale to display is used
Some compositors will send a configure event immediately after a scale event, however, this event can contain the old logical size, and should be ignored, or the window will incorrectly change size when moved between displays with differing scale factors.

Store the last requested logical size as the last configure size when resizing a floating window due to a scale change, so a configure event immediately following with the old size will be ignored.
2026-03-12 10:19:22 -04:00
Mike Egger
ae3ae4ba44 windows: support flag RIDEV_INPUTSINK in raw input (#15182) 2026-03-08 16:11:33 -07:00
Ozkan Sezer
31aa18fc1d stb_image: Fix -Wdouble-promotion warning
Upstream PR 1902 by Björn Wahlstrand at https://github.com/nothings/stb
2026-03-09 00:39:50 +03:00
Frank Praznik
89393c5519 wayland: Use the built-in names of interfaces to enable protocols 2026-03-06 13:29:32 -05:00
Frank Praznik
7605f192d5 wayland: Remove Wayland interface definitions
These are relics from very long ago, before the Wayland protocols lived in-tree and the headers and sources were generated at configure time.
2026-03-06 13:29:32 -05:00
Frank Praznik
5880b8a283 Log failure reasons during early X11 and Wayland initialization
Log the reason for failure during initialization to the debug log to aid in troubleshooting.
2026-03-03 13:29:57 -05:00
Frank Praznik
8c8efd4ccd wayland: Don't add keys with the super/GUI modifier to the keymap
SDL normalizes the super/GUI modifier away, so adding a key with this modifier will overwrite the base, unmodified value.
2026-03-02 18:29:23 -05:00
Sam Lantinga
73b13728de Added surface validation to SDL_DuplicateSurface() 2026-03-02 09:40:53 -08:00
Petar Popovic
fb1d1ab306 Fix memory leak when X11 toolkit window locale SDL_strdup() fails 2026-03-01 11:44:43 -08:00
Sam Lantinga
72d5fe213f Loading PNG files are part of the core SDL library
Don't disable this functionality when defining SDL_LEAN_AND_MEAN, but if you need to, you can define SDL_DISABLE_STB if you want to compile this out.

Fixes https://github.com/libsdl-org/SDL/issues/15139
2026-03-01 11:42:28 -08:00
Sam Lantinga
2d9fca46c6 Added surface validation to SDL_ConvertSurfaceRect()
Fixes https://github.com/libsdl-org/SDL/issues/15141
2026-03-01 11:34:34 -08:00
Frank Praznik
0a45525242 wayland: Handle min/max sizes in fixed-size windows with viewports
Wayland is sometimes at-odds with clients that want to enforce an aspect ratio or min/max window size, as certain window states have dimensions that either must be obeyed (maximized), or will give terrible results if they aren't (tiled). Use a viewport and a masking subsurface to handle cases where surfaces are unable to match the exact window size.

The changes made to accommodate this also catches some additional windowing related edge-cases, simplifies synchronization, and prevents commits before a buffer has been attached to the surface.
2026-02-28 12:55:17 -05:00
Brenton Bostick
3ac4e684ab make sure #endif comment matches the macro name 2026-02-28 08:43:42 -08:00
Frank Praznik
2f38b6a396 x11: Also send key releases when reconciling state 2026-02-24 17:12:00 -05:00
Brenton Bostick
a5889b0e44 make sure #endif comment matches the macro name 2026-02-24 09:48:57 -08:00
Frank Praznik
550394eecd x11: Don't send duplicate key down events when reconciling
Modifier keys shouldn't be repeated.
2026-02-23 15:09:34 -05:00
Sam Lantinga
2e4ac09b1f Fixed cursor mask padding calculation 2026-02-23 09:52:45 -08:00
Sam Lantinga
4f06087b36 Improved support for byte array pixel formats
Fixes https://github.com/libsdl-org/SDL/issues/15082
2026-02-21 12:51:26 -08:00
Ethan Lee
8a3820500d cocoa: Don't include KHR_portability_enumeration by default.
This is only useful if the application knows to add the flag introduced by this
extension, and at that point the application can also include the extension
themselves.

Case in point: SDL_gpu_vulkan was already doing this!
2026-02-20 11:29:26 -05:00
Frank Praznik
be82f316c4 video: Check video backend initialization when querying the grabbed window
SDL_GetGrabbedWindow() can be called when the video system is uninitialized, and, since there is no window parameter, _this must be checked for validity to avoid a segfault.
2026-02-19 11:22:03 -05:00
Ryan C. Gordon
c9591c515c emscripten: Fix only one mouse button being usable at a time.
Fixes #15056.
2026-02-17 19:00:36 -05:00
Ryan C. Gordon
c043adaeb2 Reapply "MacOS: improve scroll smoothing"
This reverts commit 63c0650321.

This reverts a revert; leaving this in main, where we'll examine it in 3.6.0.

This remains reverted in release-3.4.x

Reference Issue #15058.
2026-02-17 18:51:53 -05:00
Ryan C. Gordon
0f2d415dee emscripten: Allow resize events on fullscreen windows.
Fixes browsers on phone that change screen orientation during fullscreen not
getting a resize event.

Fixes #15024.
2026-02-17 18:40:24 -05:00
Ryan C. Gordon
63c0650321 Revert "MacOS: improve scroll smoothing"
This reverts commit 5dab2c73f0.

We'll revisit this in the next SDL release.

Reference Issue #15058.
2026-02-17 10:23:57 -05:00
Cameron Gutman
f0bda7b655 android: Fix scancode for AKEYCODE_CHANNEL_DOWN 2026-02-17 00:18:48 -06:00
Zack Middleton
54de246b4b win32: Set error for SDL_GL_GetSwapInterval() 2026-02-16 22:03:20 -05:00
Sam Lantinga
089f5e1318 Treat the D-pad center button as SDL_SCANCODE_RETURN
This fixes handling of the Android TV remote select button sent over CEC.
2026-02-16 12:34:54 -08:00
Sam Lantinga
bc623d1af6 Moved mouse/keyboard detection to a separate thread on Windows
Getting device names can hang for a long time on certain devices, so make sure this is done on a separate thread to avoid blocking initialization and the main loop.

Fixes https://github.com/libsdl-org/SDL/issues/12913
2026-02-16 11:23:14 -08:00
Sam Lantinga
a98e49409e Don't re-query HID device vendor and product 2026-02-16 11:23:14 -08:00