Simple DirectMedia Layer https://libsdl.org
Find a file
Ryan C. Gordon 6a854e035f
audio: Split device "zombie" status into multiple stages.
Otherwise, a device that is disconnected in the standard audio device thread
might keep failing WaitDevice() in a tight loop, each one generating a new
main thread callback. In normal situations, this is wasteful, but if the
app isn't pumping the event loop quickly (or at all!), this will quickly eat
up all the memory in a machine.

Now we note that the device is zombified right away, and device thread
iteration will use this to replace the implementation with the Zombie
equivalents once it owns the device lock.

The main thread callback will progress to device->zombie==2, which it uses to
decide if this is a duplicate disconnect notification. Since it also owns the
lock at this point, it takes the moment to set the Zombie implementation up,
too.

This allows things (like the WASAPI backend) to check for a non-zero zombie
state immediately without having to worry if the main thread callback ran, and
for the standard audio threads to also move to the Zombie implementation
without waiting on that callback.

(The Zombie implementation is used to make a dead device keep processing, so
things that need the audio device to make progress to function will keep
working, and things blindly pushing to an audio stream won't queue up endless
data that isn't being consumed.)

Fixes #15745.

(cherry picked from commit 6136358840)
2026-06-09 20:58:04 -04:00
.github workflows: Stop building for Steam Runtime 3 on arm64 2026-06-02 12:22:07 -07:00
android-project Fix java.lang.NoSuchMethodError: no static method "Lorg/libsdl/app/SDLActivity;.showFileDialog([Ljava/lang/String;ZZI)Z" on release build 2026-06-03 07:05:59 -07:00
build-scripts SDL_migration.cocci: Add joystick/gamepad event state functions. 2026-05-30 14:06:15 -04:00
cmake _uitoa does not exist 2026-05-25 18:40:43 +03:00
docs README-migration: Note that render target support is not universally available. 2026-05-20 12:52:35 -04:00
examples examples/demo/04-bytepusher: go back to showing help text on load failures. 2026-05-23 23:59:30 -04:00
include Updated to version 3.4.11 for development 2026-05-31 10:48:34 -07:00
src audio: Split device "zombie" status into multiple stages. 2026-06-09 20:58:04 -04:00
test render: an empty clip rect should clip all drawing 2026-05-29 13:59:23 -07:00
VisualC SDL_test: allow disabling colorized output 2025-12-15 23:19:25 +01:00
VisualC-GDK Revert "render: Added Xbox DXIL for gpu backend". 2026-03-04 15:52:52 -05:00
wayland-protocols wayland: Update the color management protocol 2025-12-15 13:54:31 -05:00
Xcode Updated to version 3.4.11 for development 2026-05-31 10:48:34 -07:00
.clang-format
.clang-tidy
.editorconfig
.gitignore Updated .gitignore for png test data 2025-10-10 08:59:27 -07:00
.wikiheaders-options wikiheaders: Generate a current list of supported environment variables. 2025-09-02 15:49:52 -04:00
AGENTS.md AGENTS.md: Change "may not" to "must not". 2026-04-15 17:27:40 -04:00
Android.mk android: remove dependency on cpu-features.h 2025-11-11 23:41:43 +00:00
BUGS.txt Added a Discord link to BUGS.txt 2025-01-13 16:42:50 -08:00
CLAUDE.md CLAUDE.md: Just copy the text from AGENTS.md in here for now. 2026-04-16 13:55:51 -04:00
CMakeLists.txt Updated to version 3.4.11 for development 2026-05-31 10:48:34 -07:00
CREDITS.md Updated the credits for SDL 3.0 2025-01-13 16:42:50 -08:00
INSTALL.md Add a link to docs/INTRO-mingw.md 2025-03-06 16:25:17 -08:00
LICENSE.txt Updated copyright for 2026 2026-01-01 09:48:19 -08:00
README.md Revert "Update README.md" 2025-11-16 01:15:10 +03:00
WhatsNew.txt Added SDL_HINT_MOUSE_DPI_SCALE_CURSORS 2025-12-09 17:12:08 -08:00

Simple DirectMedia Layer (SDL for short) is a cross-platform library designed to make it easy to write multi-media software, such as games and emulators.

You can find the latest release and additional information at: https://www.libsdl.org/

Installation instructions and a quick introduction is available in INSTALL.md

This library is distributed under the terms of the zlib license, available in LICENSE.txt.

Enjoy!

Sam Lantinga (slouken@libsdl.org)