Mirror of SDL
Find a file
Ryan C. Gordon fe1daf6fb5
audio: Mark disconnected default devices as "zombies".
Zombie devices just sit there doing nothing until a new default device
is chosen, and then they migrate all their logical devices before being
destroyed.

This lets the system deal with the likely outcome of a USB headset being
the default audio device, and when its cable is yanked out, the backend
will likely announce this _before_ it chooses a new default (or, perhaps,
the only device in the system got yanked out and there _isn't_ a new
default to be had until the user plugs the cable back in).

This lets the audio device hold on without disturbing the app until it can
seamlessly migrate audio, and it also means the backend does not have to
be careful in how it announces device events, since SDL will manage the
time between a device loss and its replacement.

Note that this _only_ applies to things opened as the default device
(SDL_AUDIO_DEVICE_DEFAULT_OUTPUT, etc). If those USB headphones are the
default, and one SDL_OpenAudioDevice() call asked for them specifically and
the other just said "give me the system default," the explicitly requested
open will get a device-lost notification immediately. The other open will
live on as a zombie until it can migrate to the new default.

This drops the complexity of the PulseAudio hotplug thread dramatically,
back to what it was previously, since it no longer needs to fight against
Pulse's asychronous nature, but just report device disconnects and new
default choices as they arrive.

loopwave has been updated to not check for device removals anymore; since
it opens the default device, this is now managed for it; it no longer
needs to close and reopen a device, and as far as it knows, the device
is never lost in the first place.
2023-07-30 11:55:56 -04:00
.github ci: disable precompiled headers for riscos 2023-07-22 15:55:48 -04:00
android-project Build on Android targeting the arm64-v8a architecture by default 2023-06-20 09:18:19 -07:00
build-scripts Fix various typos (docs/build scripts/tests) 2023-07-03 08:35:37 -07:00
cmake cmake: use pkg-config + test compile instead of Find module for detecting rpi 2023-07-28 04:41:29 +02:00
docs audio: Allow SDL_GetAudioDeviceFormat() to query the default devices. 2023-07-30 11:55:55 -04:00
include audio: Allow SDL_GetAudioDeviceFormat() to query the default devices. 2023-07-30 11:55:55 -04:00
mingw/pkg-support/cmake build: don't add SDL3 subfolder to include path for external projects 2022-11-27 14:33:13 -08:00
src audio: Mark disconnected default devices as "zombies". 2023-07-30 11:55:56 -04:00
test audio: Mark disconnected default devices as "zombies". 2023-07-30 11:55:56 -04:00
VisualC testcontroller replaces gamepadmap 2023-07-16 04:32:12 -07:00
VisualC-GDK Renamed testgamepad to testcontroller 2023-07-16 04:32:12 -07:00
VisualC-WinRT Clipboard data API revamp 2023-07-05 20:06:59 -07:00
wayland-protocols Add and event and flag to report when a window has been occluded 2023-07-18 16:42:05 -04:00
Xcode rwlock: Added SDL_rwlock API for shared locks. 2023-04-27 21:54:02 -04:00
.clang-format Commented out syntax that causes Visual Studio 2019 to complain on every edit 2022-12-02 00:43:01 -08:00
.clang-tidy Add clang-tidy config and CMake/CI support. 2023-02-06 21:02:25 -08:00
.editorconfig Fixed formatting for Haiku cc files 2023-01-25 03:03:41 -08:00
.gitignore Add VS code directory to gitignore 2023-07-25 23:36:14 -07:00
.wikiheaders-options sdlwiki: SDL3 advises users to include through 'SDL3/SDL.h' 2023-03-21 02:19:19 +01:00
Android.mk Fixed building with the 16.1.4479499 Android toolchain 2023-06-13 07:50:00 -07:00
BUGS.txt Cleaned up a few more Bugzilla mentions. 2021-02-12 14:46:49 -05:00
CMakeLists.txt audio: First shot at the SDL3 audio subsystem redesign! 2023-07-30 11:55:51 -04:00
CREDITS.txt Use Apple's nomenclature for macOS and iOS 2022-11-25 16:00:06 -08:00
INSTALL.txt Use Apple's nomenclature for macOS and iOS 2022-11-25 16:00:06 -08:00
LICENSE.txt Updated copyright for 2023 2023-01-09 09:41:41 -08:00
README-SDL.txt More HTTPS changes in the documentation. 2017-02-16 16:52:03 -05:00
README.md First pass at changing SDL 2.0 to SDL 3.0 2022-11-21 20:28:58 -08:00
TODO.txt Fixed up legacy MoinMoin URLs at wiki.libsdl.org 2021-04-01 12:20:33 -04:00
WhatsNew.txt Removed patch note for change already in SDL 2.x 2023-07-08 09:35:42 -07:00

Simple DirectMedia Layer (SDL) Version 3.0

https://www.libsdl.org/

Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve's award winning catalog and many Humble Bundle games.

More extensive documentation is available in the docs directory, starting with README.md

Enjoy!

Sam Lantinga (slouken@libsdl.org)