mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-10-26 12:27:44 +00:00
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.
These are test programs for the SDL library:
checkkeys Watch the key events to check the keyboard
loopwave Audio test -- loop playing a WAV file
loopwavequeue Audio test -- loop playing a WAV file with SDL_QueueAudio
testsurround Audio test -- play test tone on each audio channel
testaudioinfo Lists audio device capabilities
testerror Tests multi-threaded error handling
testfile Tests RWops layer
testgl A very simple example of using OpenGL with SDL
testiconv Tests international string conversion
testkeys List the available keyboard keys
testloadso Tests the loadable library layer
testlocale Test Locale API
testlock Hacked up test of multi-threading and locking
testmouse Tests mouse coordinates
testmultiaudio Tests using several audio devices
testoverlay Tests the overlay flickering/scaling during playback.
testplatform Tests types, endianness and cpu capabilities
testsem Tests SDL's semaphore implementation
testshape Tests shaped windows
testsprite Example of fast sprite movement on the screen
testthread Hacked up test of multi-threading
testtimer Test the timer facilities
testver Check the version and dynamic loading and endianness
testwm Test window manager -- title, icon, events
torturethread Simple test for thread creation/destruction
gamepadmap Useful to generate Game Controller API compatible maps
This directory contains sample.wav, which is a sample from Will Provost's
song, The Living Proof:
From the album The Living Proof
Publisher: 5 Guys Named Will
Copyright 1996 Will Provost
You can get a copy of the full song (and album!) from iTunes...
https://itunes.apple.com/us/album/the-living-proof/id4153978
or Amazon...
http://www.amazon.com/The-Living-Proof-Will-Provost/dp/B00004R8RH
Thanks to Will for permitting us to distribute this sample with SDL!