Commit Graph
100 Commits
Author SHA1 Message Date
Ryan C. Gordon 25ab8c99df pen: Offer the current window during promixity events on most platforms.
Fixes #12356.
2025-11-11 16:34:22 -05:00
Ryan C. Gordon 2382d3831c cmake: List enabled camera backends. 2025-11-09 12:05:05 -05:00
unknown b9c790949e wasapi: Don't ignore device disconnect events on unopened devices.
Reference Issue #13317.
2025-11-09 01:15:45 -05:00
Ryan C. Gordon 2f41dd7b5c pen: Better pen position precision on Windows 8 and later.
Fixes #12084.
2025-11-09 00:46:45 -05:00
Ryan C. Gordon f8a959da05 cmake: Add some symbols to the Emscripten preseed cache. 2025-11-06 13:41:55 -05:00
Ryan C. Gordon 720a9d0636 README-emscripten: Note that using the latest stable release is a good idea. 2025-11-05 16:12:01 -05:00
Ryan C. Gordon 7324823b3e emscripten: Send resize events when screen orientation changes.
The canvas _might_ be changing sizes, if you've set up your own CSS for it, or
are using SDL_HINT_EMSCRIPTEN_FILL_DOCUMENT.

Reference Issue #7359.
2025-11-05 15:52:38 -05:00
Ryan C. Gordon a0fa64a91c wikiheaders: Don't ignore macro symbols that are defined without any content.
Reference PR #12676.
2025-10-25 15:05:36 -04:00
Ryan C. Gordon 801889dafa assert: Allow SDL_FILE (and the new SDL_ASSERT_FILE) to be overridden.
This allows changing out `__FILE__` in general and the file path reported in
SDL_assert specifically to not leak build machine path info, or just simply
not include the absolute path if you swap it out with `FILE_NAME` on Clang/GCC.

Fixes #14290.
2025-10-23 16:11:35 -04:00
Ryan C. Gordon 7bff05402a endian: use TinyCC-compatible output operands for SDL_Swap16.
Closes #14300.
2025-10-23 11:28:46 -04:00
Ryan C. Gordon 2056c54548 kmsdrm: Allow windows to be marked as "unfocusable".
In this case, it means a newly-created window on a specific display won't
get mouse/keyboard input (which, presumably, will continue to go to a window
on a different physical display instead).

This also makes SDL_SetWindowFocusable() functional on the kmsdrm backend, to
change this flag later, but to be clear, there are no window focus events to
jump between displays in this backend, so this is only useful to manually
tweak things later.

Fixes #14289.
2025-10-21 14:10:49 -04:00
Ryan C. Gordon 91a5598283 cocoa: Check for duplicate proximity events.
Fixes #12137.
2025-10-20 15:55:24 -04:00
Ryan C. Gordon f999d8d99f README-emscripten: Added a note about how the 2D API handles vsync differently.
Reference PR #13962.
2025-10-20 12:35:52 -04:00
Ryan C. Gordon 1fe926769c kmsdrm: Restore atomic support. 2025-10-19 14:22:56 -04:00
Ryan C. Gordon 48b5da67f4 README-switch.md: Updated to mention Switch 2. 2025-10-14 14:18:35 -04:00
Ryan C. Gordon 55167402f4 pen: Improved docs for SDL_PenDeviceType. 2025-10-14 14:07:08 -04:00
Ryan C. Gordon 4ece6993fe uikit: Apple Pencil is always a "direct" input device.
Fixes #13065.
2025-10-14 13:59:27 -04:00
Ryan C. Gordon 72a3e4084a testsymbols: Use the existing symbol list in SDL_dynapi_procs.h 2025-10-13 10:58:03 -04:00
Ryan C. Gordon f767809e25 docs: A few minor improvements to the GL context creation docs. 2025-10-13 01:39:03 -04:00
Ryan C. Gordon c508239e91 emscripten: Add a stub SetWindowResizable implementation.
This is needed or SDL_SetWindowResizable won't let you change the window's
SDL_WINDOW_RESIZABLE flag.

Fixes #12405.
2025-10-11 11:46:15 -04:00
Ryan C. Gordon f556027e15 hints: Remove SDL_HINT_DEBUG_LOGGING.
This now just needs generic debug-level logging enabled, for example:

```bash
SDL_LOGGING=debug ./test/testsprite
```

Fixes #13425.
2025-10-10 21:55:48 -04:00
Ryan C. Gordon 6ab212bd13 cpuinfo: Include unistd.h for getpagesize() support, too. 2025-10-10 21:52:41 -04:00
Ryan C. Gordon f7d5bb3c7a cpuinfo: Added SDL_GetSystemPageSize.
Fixes #14201.
2025-10-10 21:16:10 -04:00
Ryan C. Gordon 1191f81a3c camera: Make refcounts more robust, and actually destroy disconnected cameras.
Fixes #14049.
2025-10-10 16:21:59 -04:00
unknown 5fb2bda549 windows: Use WGL instead of EGL if extension available, even with GLES1.
Also broke this unwieldy line of code up into several.

Fixes #13056.
2025-10-09 14:05:06 -04:00
unknown 84981ead73 docs: Note that Windows might block SDL_PollEvent() on window drag.
Reference Issue #13435.
2025-10-09 13:41:49 -04:00
Ryan C. Gordon ef1d4ed1bf windows: Allow OpenGL ES creation without EGL, if the WGL supports it.
Note that this should work with GLES1, don't let the "es2" in
WGL_EXT_create_context_es2_profile fool you.

Fixes #13056.
2025-10-09 13:07:57 -04:00
Ryan C. Gordon 09bd8e8a5a camera: Fix Emscripten builds when using -sASYNCIFY.
Thanks to user pancakeswya on GitHub for the patch!

Fixes #13934.
2025-10-09 09:54:48 -04:00
Ryan C. Gordon 9a7cd95ac3 properties: Added SDL_PROP_NAME_STRING.
Fixes #14155.
2025-10-08 21:50:18 -04:00
Ryan C. Gordon 808a3f573f egl: Better attempt at retrying surface creation w/o EGL_EXT_present_opaque.
Fixes #13094.
2025-10-08 21:42:56 -04:00
Ryan C. Gordon 0467c531fa wasapi: Check for a NULL device during disconnect handling.
This is probably something we already cleaned up that has something running
in an unexpected order now that we've moved disconnect work to the main thread.
2025-10-03 09:36:31 -04:00
Ryan C. Gordon 24b47814f8 emscripten: Another attempt at optionally having the canvas use whole window.
Fixes #11949.
2025-10-02 13:01:35 -04:00
Ryan C. Gordon a1672f2d2f docs: Fix param call on SDL_SetEventFilter.
https://wiki.libsdl.org/SDL3/README-documentation-rules#dont-repeat-type-names-in-param-and-returns-sections
2025-09-27 13:55:31 -04:00
Ryan C. Gordon 2676f23910 audio: fix crash in SDL_GetAudioStreamOutputChannelMap.
Fixes #14058.
2025-09-27 13:31:29 -04:00
Ryan C. Gordon e528d5bd9f wasapi: Don't proxy device disconnect to the WASAPI management thread.
It gets proxied to the main thread, now.

Fixes deadlocks when unplugging a playing USB audio device.
2025-09-26 14:11:08 -04:00
Ryan C. Gordon 65e462a6f2 audio: Handle device disconnects on the main thread.
This avoids situations like:

- PulseAudio holds its own lock in the hotplug thread.
- The hotplug thread notices a device went away.
- The hotplug thread calls SDL_AudioDeviceDisconnected().
- SDL_AudioDeviceDisconnected() tries to grab the device lock.
- The device thread is holding the device lock...
- ...but is currently waiting on PulseAudio's lock to release.

In short: deadlock. It's better to queue this work to run on the main thread,
where we can guarantee a start with _none_ of the audio subsystem locks held.
2025-09-25 16:02:19 -04:00
Ryan C. Gordon f71348f38b examples/misc/02-clipboard: Removed onmouseover-generating helper include. 2025-09-25 13:50:58 -04:00
Ryan C. Gordon 2f30f7a6bd examples/misc/02-clipboard: Patched to compile on Visual Studio. 2025-09-24 17:14:53 -04:00
Ryan C. Gordon 17d77f5fbd examples: Added misc/02-clipboard 2025-09-24 14:41:29 -04:00
Ryan C. Gordon f5d7004cbb main: Fixed crashes if specifying hints to Emscripten as URL options. 2025-09-22 11:57:42 -04:00
Ryan C. Gordon 09ee8876b3 wav: Patched to compile on Visual Studio. 2025-09-22 10:37:52 -04:00
Ryan C. Gordon c8eb9f3706 x11: Set EGL surface for foreign X11 windows.
Cherry-picked by hand from SDL2: 780ec8fac0

Also cleaned up the XDestroyIC cleanup code to match the setup code.

Fixes #11996.
2025-09-22 10:37:52 -04:00
Ryan C. Gordon 44e4deab7c wav: Clamp DATA chunk to size of file if possible.
Prevents a malicious file from malloc'ing multiple gigabytes.

Fixes #10052.
2025-09-22 09:50:56 -04:00
Ryan C. Gordon 9ad04ff69e examples/misc/01-power/README.txt: fixed wording. 2025-09-16 14:37:51 -04:00
Ryan C. Gordon 1c9127ee4d examples: Preload onmouseover images, so it's more responsive to the user. 2025-09-16 14:22:39 -04:00
Ryan C. Gordon efb5829124 examples/misc/01-power/README.txt: Note that this is Chrome-only for now. 2025-09-16 13:37:58 -04:00
Ryan C. Gordon 3ee29f2e7a render: Don't default to vsync=0 on Emscripten.
Fixes #12805.
2025-09-16 12:30:22 -04:00
Ryan C. Gordon 9dbf2c7c0f examples/misc/01-power: Forgot to remove my code for building onmouseover. 2025-09-16 12:21:48 -04:00
Ryan C. Gordon f704661d22 examples: Added "misc" category for the web builds. 2025-09-16 12:08:04 -04:00
Ryan C. Gordon e341cc44cc examples: Added misc/01-power 2025-09-16 12:06:12 -04:00
Ryan C. Gordon 85ea2bfbf0 examples: Much, much easier way to generate thumbnail and onmouseover files. 2025-09-16 12:06:12 -04:00
Ryan C. Gordon de1b52f161 cmake: Adjust Enabled Backends list for render drivers to catch opengles2.
This happens to work here because we don't have anything too complex, afaik.
Rejecting strings with underscores was crucial for other things, like video
with all its X11 variables, so this can't be applied to the other subsystems.

(Also, renaming the `SDL_VIDEO_RENDER_OGL_ES2` variable might be nice, too,
but let's keep this simple for now.)

Fixes #13938.
2025-09-13 11:28:57 -04:00
Ryan C. Gordon 2ede37f5a3 cmake: Removed unused SDL_GPU_DXVK bits.
Reference Issue #13938.
2025-09-13 11:24:55 -04:00
Ryan C. Gordon 98e22213da emscripten: Do a little better at tracking Caps/Num/Scroll Lock state.
Fixes #5447.
2025-09-13 01:50:22 -04:00
Ryan C. Gordon 411e47ba00 docs: Remove a redundant comment.
(The wiki will link to this symbol, we don't have to explicitly mention it.)
2025-09-12 20:11:44 -04:00
Ryan C. GordonandAnonymous Maarten 1c784c453d cmake: Report enabled subsystem backends in a compact form. (#13926)
Looks like this:

```
-- Enabled backends:
--   Video drivers: dummy kmsdrm(dynamic) offscreen wayland(dynamic) x11(dynamic)
--   X11 libraries: xcursor xdbe xfixes xinput2 xrandr xscrnsaver xshape xsync xtest
--   Render drivers: gpu ogl vulkan
--   GPU drivers: vulkan
--   Audio drivers: alsa(dynamic) disk dummy jack(dynamic) pipewire(dynamic) pulseaudio(dynamic) sndio(dynamic)
--   Joystick drivers: hidapi linux virtual
```

Fixes #7922.

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2025-09-12 14:59:43 -04:00
Ryan C. Gordon c78818bd4b examples: When linking to directories, append a '/' to the URL.
This works without it, but generates an extra redirect on the web server to
the same a URL with the '/' appended, so we might as well supply it ourselves
and remove the extra roundtrip to the server.
2025-09-12 14:23:01 -04:00
Ryan C. Gordon 614ae1b115 emscripten: Support analog gamepad triggers on both Firefox and Chrome.
Fixes #13051.
2025-09-12 14:23:01 -04:00
Ryan C. Gordon 8d5b82be2e io: POSIX implementation tries to get status information on short reads/writes.
Fixes #13413.
2025-09-11 10:11:51 -04:00
Ryan C. Gordon 4d6e0e0087 io: read_fd should only report EOF on a zero-byte return value.
POSIX says that's the EOF indicator, not a non-zero a short read.
2025-09-11 10:11:50 -04:00
Ryan C. Gordon 387a2b924d Revert "Sync SDL3 wiki -> header"
This reverts commit 15e60cd37f.

We don't need to link to SDL_ttf here, it makes the headers look ugly.
2025-09-09 10:37:36 -04:00
Ryan C. Gordon 11411bb5ef renderer: Don't use wrapping on NPOT textures if the renderer can't handle it.
Fixes #13887.
2025-09-08 17:09:41 -04:00
Ryan C. Gordon a7ee54f9a3 examples/README: Added a note about generating onmouseevent and thumbnails.
So I don't have to figure this out every time I write a new example.
2025-09-07 17:45:38 -04:00
Ryan C. Gordon 7c6ecb1cc4 examples: Reencoded input/02-joystick-events/onmouseover.webp, much smaller. 2025-09-07 17:37:26 -04:00
Ryan C. Gordon a5d790124c examples: Added input/04-gamepad-events 2025-09-07 14:06:58 -04:00
Ryan C. Gordon cfa31df2d5 examples/input/03-gamepad-polling: Added some README notes about the web. 2025-09-07 11:48:53 -04:00
Ryan C. Gordon bab4bb3817 examples: Fixed HTML output with multi-paragraph READMEs. 2025-09-07 11:48:53 -04:00
Ryan C. Gordon 2a0e751ff5 gamepad: Fixed Emscripten guide button, after recent changes.
(buttons above 12 all shifted down by four, since the dpad buttons now look
like a hat...the only one above the dpad buttons on a standard layout is the
guide button, index 16. This change moves it to 12.)
2025-09-07 10:25:12 -04:00
Ryan C. Gordon 82a800e266 emscripten: Let joystick dpad-to-hat conversion allow impossible combinations.
This matches what other backends do.
2025-09-07 10:02:20 -04:00
Ryan C. Gordon b58d0f8e4e gamepad: Fixed Emscripten d-pad, after recent changes. 2025-09-07 10:00:41 -04:00
Ryan C. Gordon 79b881fc2e examples: Minor tweak to joystick examples' comments. 2025-09-06 23:03:46 -04:00
Ryan C. Gordon cf92ef7994 examples: Added input/03-gamepad-polling 2025-09-06 23:03:04 -04:00
Ryan C. Gordon a6dc61ab32 joystick: Emscripten can often fake a hat from the d-pad buttons.
Fixes #13817.
2025-09-05 14:46:59 -04:00
Ryan C. Gordon 937bf4d789 alsa: Restart PCM devices after recovery from an overrun/underrun.
snd_pcm_recover() puts the device back in SND_PCM_STATE_PREPARED state; you
have to explicitly restart the device afterwards with snd_pcm_start().

Fixes #13761.
2025-09-05 13:50:06 -04:00
Ryan C. Gordon b8197a2291 io: rework how we set SDL_IOStream status.
This now relies on the implementation to set these flags on short reads/writes
instead of the higher level checking if SDL_SetError() was called.

Additionally (and crucially), this now sets ERROR or EOF on all short reads,
across all backends, not just when we get a zero-byte return value.

Fixes #13720.
2025-09-05 12:43:13 -04:00
Ryan C. Gordon 3597877277 SDL_main.h: Cleanups in SDL_RegisterApp documentation.
There is an escaped pipe character, because this ends up in a Markdown table
on the wiki, and the wiki software (incorrectly, I think) sees the pipe inside
a code-block and thinks it's the end of the table cell if not escaped.

But this escape char looks wrong everywhere else.

Keeping the parameter table terse is always a good idea, so I moved the
detail out to the Remarks section, which doesn't have a problem with this
character appearing in the text.
2025-09-04 19:50:04 -04:00
Ryan C. Gordon af74b1fe84 wikiheaders: Generate a current list of supported environment variables.
Fixes #13827.
2025-09-02 15:49:52 -04:00
Ryan C. Gordon 7323104f97 openslES: Patched to compile.
(whoops.)
2025-09-01 11:10:02 -04:00
Ryan C. Gordon 0b2a003a35 openslES: OpenSL ES on Android only supports two formats, limit to that.
(Three with the floating point extension, which we use.)

This is according to:

https://developer.android.com/ndk/guides/audio/opensl/opensl-for-android

Previously, this would accept a request for Sint8 or Sint32 and disaster
would ensue.

Fixes #13779.
2025-09-01 10:30:29 -04:00
Ryan C. Gordon ee69cdc1fe README-emscripten.md: Fixed cmake commmand line for enabling pthreads.
Fixes #13190.
2025-08-29 09:39:14 -04:00
Ryan C. Gordon e9c2e9bfc3 SDL_iostream.h: Clarified thread-safety docs.
Fixes #13814.
2025-08-27 22:03:50 -04:00
Ryan C. Gordon 5b688514c7 wikiheaders: Don't autolink things that are already linked.
This is a dirty hack, but it currently works for our purposes. We just refuse
to link an eligible string (like, say...`SDL_shadercross`), if there's a '['
character right before it.

This WILL NOT WORK if the string is in the middle of a link! For example, if
you had `[please refer to SDL_shadercross](https://example.com/)`, this will
still fail in the usual ways, but we're not building out a robust parser here
at the moment, and this catches the most common problem.

Fixes #13160.
Fixes https://github.com/libsdl-org/sdlwiki/issues/752
Closes https://github.com/libsdl-org/sdlwiki/pull/725
2025-08-26 14:43:59 -04:00
Ryan C. Gordon 8f04e4af00 audio: Clean out all the bitshifting.
Hide the implementation details in something human-readable.
2025-08-25 13:10:51 -04:00
Ryan C. Gordon 01d94ca9de audio: Renamed device_hash_lock to subsystem_rwlock.
It protects more than the device hashes!
2025-08-25 13:10:51 -04:00
Ryan C. Gordon 226fecff78 audio: Split current_audio.device_hash into two separate hashtables.
One for physical devices, one for logical devices.

Fixes #13032.
2025-08-25 13:10:51 -04:00
Ryan C. Gordon ec0e4e21c7 docs: Mark most of SDL_filesystem.h as thread-safe.
Fixes #13738.
2025-08-13 16:32:55 -04:00
Ryan C. Gordon e1a623f129 SDL_migration.cocci: Fixed a few incorrect function names. 2025-08-02 22:54:03 -04:00
Ryan C. Gordon dec21043a0 docs: Slightly improve virtual joystick docs.
Reference https://github.com/libsdl-org/sdlwiki/issues/78
2025-07-30 00:52:29 -04:00
Ryan C. Gordon ea04bdb5f3 docs: Added a note about virtual joysticks to CategoryJoystick.
Fixes https://github.com/libsdl-org/sdlwiki/issues/78
2025-07-30 00:44:35 -04:00
Ryan C. Gordon acbe86399d docs: Note SDL_EVENT_AUDIO_DEVICE_ADDED is sent for all devices at startup.
Fixes https://github.com/libsdl-org/sdlwiki/issues/721
2025-07-29 23:22:50 -04:00
Ryan C. Gordon 774c0b36ea android: Different approach to SDL_GetPathInfo() for assets.
Reference Issue #13050.
2025-07-29 12:15:25 -04:00
Ryan C. Gordon c80d6954cb Revert "audio: Added SDL_SetAudioIterationCallbacks()."
This reverts commit 608f706a95.

Didn't end up using this in SDL3_mixer, and it's a super-awkward API if we
don't need it.

I _might_ bite the bullet and let people lock a physical audio device, though,
as I could see that being useful but less awkward for the same reasons I
originally wanted it.
2025-07-25 01:38:21 -04:00
Ryan C. Gordon 39e9ac6d1f ci: Patched to compile on Android. 2025-07-23 23:53:46 -04:00
Ryan C. Gordon f5a0222a8e aaudio: Try to select a more-useful microphone for recording.
Fixes #13402.
2025-07-23 22:38:28 -04:00
Ryan C. Gordon 07ef532681 hints: Renamed SDL_HINT_LOG_BACKENDS to SDL_DEBUG_LOGGING.
This still logs backend choices, but we might use it for other things. For
example, what Android device is being used, or all the devices we enumerated,
etc.

Ideally this eventually logs all the stuff we often have to ask followup
questions about.
2025-07-22 13:19:30 -04:00
Ryan C. Gordon af1c05fd58 filesystem: Check SDL_GetPrefPath parameters at the higher level.
...so the backends don't have to do it.

Also added a stern warning about `org` being omitted, but leaving it as
allowed so as not to break existing apps (more than they are already broken,
at least).

Fixes #13322.
2025-07-22 12:28:01 -04:00
Ryan C. Gordon 27caa57695 dialog: Make sure we don't underflow a string in Cocoa backend.
Fixes #13014.
2025-07-21 16:02:42 -04:00
Ryan C. Gordon b3af72f69e emscripten: Respect SDL_HINT_MAIN_CALLBACK_RATE.
Fixes #13345.
2025-07-15 20:36:56 -04:00
Ryan C. Gordon f2ae6503c0 audio: Binding an SDL_AudioStream will set missing formats.
It _must_ have the format set for the opposite side from the device (so
playback needs the src format set, and recording needs the dst format set),
since the stream gets mangled by the device thread if not. So if it has never
been set (stream created with NULL audiospec), just set it to match the device.
If the stream is just meant to buffer and not convert, this is desired
behavior, even if it didn't also fix a bug.

Binding the audio stream will always set the device side's format, as usual;
this does not need to be set by the caller at all.

Fixes #13363.
2025-07-15 06:40:09 -04:00
Ryan C. Gordon 10004ab0ea hints: Added SDL_HINT_LOG_BACKENDS.
Fixes #13354.
2025-07-14 19:49:38 -04:00