Commit Graph

22258 Commits

Author SHA1 Message Date
Zana Domán
095e899973 gpu: validate transfer buffer usage (#15923) 2026-07-03 17:11:35 -07:00
Anthony
31c6a35f10 Update SDL_androiddialog.c 2026-07-03 16:18:28 -07:00
Ozkan Sezer
a6d7872d2f SDL_notification.h: fix for C89 mode. 2026-07-04 00:47:56 +03:00
Ozkan Sezer
aad60dec77 SDL_intrin.h: fix error from old gcc. 2026-07-04 00:47:55 +03:00
Sam Lantinga
31caedaf47 video: Fix -Wcomma warnings in miniz
e.g.
SDL3/src/video/miniz.h:1058:19: warning: possible misuse of comma operator here [-Wcomma]
 1058 |       s1 += ptr[0], s2 += s1; s1 += ptr[1], s2 += s1; s1 += ptr[2], s2 += s1; s1 += ptr[3], s2 += s1;
2026-07-03 13:34:41 -07:00
Sam Lantinga
7523eb22a0 cocoa: Fix -Wimplicit-retain-self warning in SDL_cocoawindow
SDL3/src/video/cocoa/SDL_cocoawindow.m:1149:38: error: block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior [-Werror,-Wimplicit-retain-self]
 1149 |         SDL_OnWindowLiveResizeUpdate(_data.window);
2026-07-03 13:34:39 -07:00
Sam Lantinga
b9d5252dfa hidapi: Ignore enum-enum-conversion warnings in libusb hid.c which requires mixing enum bitmasks
SDL3/src/hidapi/libusb/hid.c:711:62: error: bitwise operation between different enumeration types ('enum libusb_endpoint_direction' and 'enum libusb_request_recipient') [-Werror,-Wenum-enum-conversion]
  711 |         int res = libusb_control_transfer(handle, LIBUSB_ENDPOINT_IN|LIBUSB_RECIPIENT_INTERFACE, LIBUSB_REQUEST_GET_DESCRIPTOR, (LIBUSB_DT_REPORT << 8), (uint16_t)interface_num, tmp, expected_report_descriptor_size, 5000);
2026-07-03 13:34:36 -07:00
Sam Lantinga
7346311377 cocoa: Fix invalid NSMenuItem selector in SDL_tray
SDL3/src/tray/cocoa/SDL_tray.m:511:98: error: undeclared selector 'menu:' [-Werror,-Wundeclared-selector]
  511 |         nsitem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithUTF8String:label] action:_selector(menu:) keyEquivalent:_""];
2026-07-03 13:34:34 -07:00
Sam Lantinga
5d693d72f8 Fix -Wstrict-prototypes warnings
e.g.
SDL3/src/hidapi/libusb/hid.c:636:31: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
  636 | static void start_event_thread()
2026-07-03 13:34:30 -07:00
Sam Lantinga
efce7ca4b1 Added HDR support on visionOS 2026-07-03 13:33:27 -07:00
Sam Lantinga
9123f69cdd Added testcolorspace to the Apple test Xcode project 2026-07-03 13:33:27 -07:00
Tim Stahlhut
ad86dc9811 Cygwin: testautomation run-time fix
[sdl-ci-filter cygwin]
[sdl-ci-filter msys2-*]
2026-07-03 09:23:33 -07:00
Anthony
7418e1aef1 Update proguard-rules.pro 2026-07-03 09:22:45 -07:00
Sam Lantinga
1be08afec5 Added support for several Turtle Beach Nintendo Switch 2 controllers
* Turtle Beach Afterglow Wired Controller for Nintendo Switch 2
* Turtle Beach Afterglow Wave Wired Controller for Nintendo Switch 2
* Turtle Beach Afterglow Wireless RGB Gaming Controller for Nintendo Switch 2
* Turtle Beach Rematch Wired Controller for Nintendo Switch 2
* Turtle Beach Rematch Wireless RGB Gaming Controller for Nintendo Switch 2
2026-07-03 09:17:34 -07:00
Sam Lantinga
7dd7c7607f Removed unused code in UIKit_AddDisplay() 2026-07-02 14:05:06 -07:00
Holden Ramsey
2919e1899f Android: decouple JNI setup from unused subsystems
Query the natively compiled-in subsystems at runtime so the Java side
only registers and initializes the managers that exist, fixing
UnsatisfiedLinkError when SDL is built with a subsystem disabled
(e.g. -DSDL_AUDIO_DISABLED).

- Add SDL.setupJNI(int subsystems) plus SDL_INIT_* Java constants;
  SDLActivity passes an overridable getInitSubsystems() mask so custom
  activities can skip Java-side setup for unused subsystems.
- Distinguish compiled from requested subsystems: JNI registration
  follows nativeGetCompiledSubsystems(), while manager initialization
  and surface/layout creation follow the requested-and-compiled mask.
- Gate HIDDeviceManager.acquire() (USB/BLE device scanning) on a new
  nativeIsHIDAPIEnabled() query so HIDAPI-less builds never touch it.
- Gate SDLControllerManager.initializeDeviceListener() and the
  joystick key-event path on the controller subsystem; gate the
  clipboard handler on video, mirroring the native guards.
- Guard the SDLControllerManager JNI bindings with
  SDL_ANDROID_NEED_CONTROLLER_MANAGER (joystick or haptic enabled).
- Skip layout updates in ShowTextInputTask when no layout exists
  (video disabled).
- Reorganize SDL_android.h/.c into guarded per-subsystem groups with
  matching ordering.
2026-07-02 11:30:47 -07:00
Frank Praznik
9961fb80a7 wayland: Refactor the cursor event thread into a general purpose event thread
No functional changes, just tidies the mouse code, and allows for future generalized use of the event handling thread, if required.
2026-07-02 13:00:26 -04:00
Sam Lantinga
bd7c9e467b Removed helpCursor and cellCursor NSCursor selectors
These don't actually exist and we don't have a better fallback.
2026-07-01 15:54:00 -07:00
SDL Wiki Bot
ceb4a7f1cb Sync SDL3 wiki -> header
[ci skip]
2026-07-01 22:03:03 +00:00
Ryan C. Gordon
eb04627741 stdinc: SDL_SetMemoryFunctions now handles NULL function pointers better.
Now it does _not_ call SDL_SetError(), since that would allocate memory with
the system in a weird state, and setting all four functions to NULL will
restore the original memory functions, as a shortcut vs having to query
SDL_GetOriginalMemoryFunctions() first.

Fixes #15914.
2026-07-01 18:00:09 -04:00
palxex
f09a6679a3 dos: Use INT 0x10/AX=0x1A00 to detect VGA presence 2026-07-01 16:08:14 -04:00
Dimitri Alexeev
ef6e76e00b joystick: Apply Gyroscope Zero-Rate Offset (ZRO) subtraction to live IMU data for Switch Controllers. 2026-07-01 09:12:25 -07:00
Dimitri Alexeev
f5511b49b6 joystick: Fix pointer sequencing in Switch Pro Controller user IMU calibration. Prevent reading potentially stale memory. No functional changes. 2026-07-01 09:12:25 -07:00
Anonymous Maarten
35e3068846 ci: disable clang-tidy on Ubuntu 22.04
Its clang-tidy is not compatible with c++17, required by Qt6
2026-07-01 18:11:49 +02:00
Anonymous Maarten
f58cd8f26d ci: avoid brew creating noisy annotations 2026-07-01 18:11:49 +02:00
Anonymous Maarten
e07d149a2a ci: bump Ubuntu runner of Intel oneAPI 2026-07-01 18:11:49 +02:00
Anonymous Maarten
dd6f438efb Limit default search path of build-scripts/check_stdlib_usage.py 2026-07-01 18:11:49 +02:00
Ryan C. Gordon
774728b6ff audio: Pass the id, not the obj, to SDL_AudioDeviceDisconnected_OnMainThread.
If a device has disconnected, and the app has quit the audio subsystem before
the queued main thread function has run, the pointer will be bogus by the time
the run occurs. So now it looks up the object from its device ID, and if the
lookup returns NULL, it returns immediately and everything works out.

Reference Issue #14856.

(which might be fixed by this or not.)
2026-06-30 16:19:49 -04:00
Sam Lantinga
dfefce62e2 Get the physical device properties when using an external Vulkan device
Fixes `testffmpeg --sprites 100` when using the Vulkan renderer
2026-06-30 12:53:17 -07:00
Sam Lantinga
2069d5f6bc Fixed formatting 2026-06-30 12:53:17 -07:00
SDL Wiki Bot
4fe0d8c1cd Sync SDL3 wiki -> header
[ci skip]
2026-06-30 16:33:03 +00:00
Frank Praznik
b4b1cdeb27 wayland: Add support for the toplevel tag protocol
Uses the same ID string as the session manager protocol.
2026-06-30 12:30:08 -04:00
Frank Praznik
d8971fa00a wayland: Add support for the session management protocol
Add session management protocol support for saving/restoring toplevel window state across runs.
2026-06-30 12:30:08 -04:00
Sam Lantinga
464b90b475 Issue a batch when changing render targets in the Vulkan renderer
Otherwise we get rendering artifacts that look like drawing is being applied to the wrong render target
2026-06-30 09:00:09 -07:00
Frank Praznik
2f1cf4629c wayland: Fix incorrect dereference when sorting icon surfaces 2026-06-30 10:15:28 -04:00
Mason Remaley
a168e96cbc Fixes invalid dereference in animated cursor sort
`Wayland_CreateAnimatedCursor` calls `SDL_qsort` on an array of
type `**SDL_Surface`, not on an array of `*SDL_Surface`. As such the void
pointers in the callback need to be casted to `SDL_Surface **` not
`SDL_Surface *`.

This was likely not caught since it's very unlikely that reading a few
bytes past the end of this array results in reading unreadable memory,
so the only side effect was invalid sort results, which is a bit subtle.

I caught this because I build SDL with UBSAN enabled in my debug builds,
and it trapped when the multiplication of the garbage `SDL_Surface*`
width and heights overflowed. I validated that the change is correct by
adding logs (that have then since been removed) demonstrating that it
was previously comparing garbage, and is now comparing the actual cursor
surfaces.
2026-06-30 09:53:17 -04:00
Ozkan Sezer
79ae27bba1 update khronos headers from mainstream. 2026-06-30 03:37:47 +03:00
Sam Lantinga
e0b12bbcea Added a workaround for a crash in NVIDIA drivers when rendering YUV with Vulkan
Fixes https://github.com/libsdl-org/SDL/issues/13878
2026-06-29 14:09:24 -07:00
Sam Lantinga
92c3150859 Fixed OpenVR build 2026-06-29 13:14:33 -07:00
SDL Wiki Bot
9da5a636ad Sync SDL3 wiki -> header
[ci skip]
2026-06-29 17:51:17 +00:00
Andrei Sabalenka
7ee8160922 gpu: make NULL object releases no-ops
These functions already return immediately for NULL objects in normal builds, but it was done through CHECK_PARAM. When building with SDL_DISABLE_INVALID_PARAMS, these checks were compiled out, and NULL resources could reach backend release functions and cause segfault.

Always return on NULL so API behaves consistently regardless of SDL_DISABLE_INVALID_PARAMS.
2026-06-29 10:47:52 -07:00
Frank Praznik
0a8ccb11eb win32: Use the current cursor coordinates when processing WM_NCACTIVATE
The event coordinates returned by GetMessagePos() for WM_NCACTIVATE are out of date if the cursor moved while an overlay was active, and may indicate that the cursor is still in the window when it is not. Always use the current cursor coordinates when processing this message to avoid incorrectly setting mouse focus if the cursor is no longer within the window.
2026-06-29 12:38:17 -04:00
Sam Lantinga
f0e99e7c7f Removed unnecessary assert in WIN_SetWindowOpacity()
Fixes https://github.com/libsdl-org/SDL/issues/15896
2026-06-27 21:10:19 -07:00
BZL
111bb79bf8 Add Void GENESIS controller support
Add AndGAMER/Void Gaming USB IDs for Void GENESIS.

Recognize the Void GENESIS SInput VID/PID pair and set its device name.
Add DirectInput gamepad mappings for the wired and dongle DirectInput modes.
2026-06-27 20:11:44 -07:00
Cameron Gutman
32f460d357 keyboard: Limit text input event size for sdl2-compat 2026-06-27 17:34:26 -07:00
Ryan C. Gordon
8ee03d68bd README-migration: patched SDL_RWFromFP replacement code to compile.
Reference Issue #15893.
2026-06-27 16:57:17 -04:00
Ozkan Sezer
4bebbec9d4 update khronos headers from mainstream. 2026-06-26 21:32:02 +03:00
Holden Ramsey
7a6eed4ec8 Android: decouple video/audio subsystems from JNI initialization
Allow Android embedders to use SDL without the full video/audio Java
layer by gating subsystem-specific code behind SDL_VIDEO_DISABLED and
SDL_AUDIO_DISABLED preprocessor flags.

This enables applications that only need joystick/gamepad support
(e.g. Qt-based apps like QGroundControl) to build SDL without shipping
stub Java classes for unused subsystems.

Changes:
- Split SDLActivity JNI method table into core (lifecycle, hints,
  permissions) and video (surface, input, clipboard, orientation)
- Gate SDLAudioManager and SDLInputConnection JNI registration
- Make checkJNIReady() subsystem-aware: no longer requires
  mAudioManagerClass when SDL_AUDIO_DISABLED
- Group method ID resolution by subsystem in nativeSetupJNI()
- Guard all video/audio function implementations and declarations
- Keep display orientation accessors always available (needed by camera)
- Add subsystem-selective SDL.setupJNI(int)/initialize(int) to SDL.java
  with backwards-compatible zero-arg overloads
- Guard SDL_VIDEO_DRIVER_ANDROID and related defines in
  SDL_build_config_android.h
2026-06-26 10:59:54 -07:00
Frank Praznik
8554d1c23c time: Convert the PS2 time implementation to a dummy implementation
SDL has no dummy fallback for the RTC functions, and the PS2 implementation is just an empty dummy implementation, so rename it and build it if no system-specific time functionality is found.
2026-06-25 11:32:48 -04:00
Ryan C. Gordon
9f4327068e pipewire: Don't set a specific stream name if the node name is the same.
Fixes #15746.
2026-06-25 10:39:20 -04:00