1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:38:12 +00:00
serenity/Userland/Libraries/LibAudio
Zaggy1024 37acdc9ba7 LibAudio: Unlock the mutex in PulseAudioContext::instance() before exit
The mutex used to protect from multiple threads creating PulseAudio
contexts simultaneously could remain locked when an application exited.
The static variables' destructors could be called on the main thread
while another thread is running `PulseAudioContext::instance()` and
synchronously connecting to a PulseAudio daemon. This would cause an
assertion in Mutex that it is unlocked upon its destructor being
called.

By creating a static `ScopeGuard` that locks and immediately unlocks
the mutex, we can ensure that the main thread waits for the connection
to succeed or fail. In most cases, this will not take long, but if the
connection is timing out, it could take a matter of seconds.
2023-08-07 10:40:34 -06:00
..
CMakeLists.txt LibAudio: Create a playback class with a PulseAudio implementation 2023-08-04 13:49:36 -06:00
ConnectionToManagerServer.cpp AudioServer+Userland: Separate audio IPC into normal client and manager 2023-06-25 00:16:44 +02:00
ConnectionToManagerServer.h AudioServer+Userland: Separate audio IPC into normal client and manager 2023-06-25 00:16:44 +02:00
ConnectionToServer.cpp AudioServer+Userland: Decouple client sample rates from device rate 2023-07-01 23:27:24 +01:00
ConnectionToServer.h Userland: Rename Core::Object to Core::EventReceiver 2023-08-06 20:39:51 +02:00
FlacLoader.cpp LibAudio: Optimize FlacLoader by avoiding allocations 2023-07-06 19:13:36 +01:00
FlacLoader.h LibAudio: Optimize FlacLoader by avoiding allocations 2023-07-06 19:13:36 +01:00
FlacTypes.h LibAudio: Compute and verify FLAC frame header checksums 2023-05-18 22:23:15 +02:00
Forward.h LibAudio: Create a playback class with a PulseAudio implementation 2023-08-04 13:49:36 -06:00
GenericTypes.cpp LibAudio: Don't return a seek point if it is after the desired sample 2023-07-06 14:27:57 +01:00
GenericTypes.h LibAudio: Prevent multiple kinds of buffer overruns in FLAC picture load 2023-07-04 12:47:08 +02:00
Loader.cpp LibAudio: Use ReadonlyBytes instead of Bytes for buffer parameters 2023-07-20 08:02:12 +01:00
Loader.h LibAudio: Use ReadonlyBytes instead of Bytes for buffer parameters 2023-07-20 08:02:12 +01:00
LoaderError.h LibAudio: Stop using and remove LOADER_TRY 2023-07-04 13:24:17 -06:00
Metadata.cpp LibAudio: Add a generic audio metadata container 2023-03-13 12:35:17 -04:00
Metadata.h LibAudio: Add a generic audio metadata container 2023-03-13 12:35:17 -04:00
MP3HuffmanTables.h LibAudio: Handle bitstream errors in MP3 Huffman decode 2023-07-02 02:15:32 +02:00
MP3Loader.cpp LibAudio: Add a seek point at the first sample in MP3Loader 2023-08-04 08:53:19 +01:00
MP3Loader.h LibAudio: Extract loader stream creation from the plugins 2023-06-27 15:28:22 +01:00
MP3Tables.h LibAudio+LibDSP: Switch samples to 32-bit float instead of 64-bit float 2022-05-07 20:20:16 +02:00
MP3Types.h LibAudio: Use symbolic constants for MP3 frame and granule size 2023-03-13 13:25:42 +01:00
MultiChannel.h LibAudio: Optimize FlacLoader by avoiding allocations 2023-07-06 19:13:36 +01:00
PlaybackStream.cpp LibAudio: Create a playback class with a PulseAudio implementation 2023-08-04 13:49:36 -06:00
PlaybackStream.h LibAudio: Create a playback class with a PulseAudio implementation 2023-08-04 13:49:36 -06:00
PlaybackStreamPulseAudio.cpp LibAudio: Remove the strong reference to the PulseAudio control thread 2023-08-07 10:40:34 -06:00
PlaybackStreamPulseAudio.h LibAudio: Remove the strong reference to the PulseAudio control thread 2023-08-07 10:40:34 -06:00
PulseAudioWrappers.cpp LibAudio: Unlock the mutex in PulseAudioContext::instance() before exit 2023-08-07 10:40:34 -06:00
PulseAudioWrappers.h LibAudio: Create a playback class with a PulseAudio implementation 2023-08-04 13:49:36 -06:00
QOALoader.cpp LibAudio: Stop using and remove LOADER_TRY 2023-07-04 13:24:17 -06:00
QOALoader.h LibAudio: Extract loader stream creation from the plugins 2023-06-27 15:28:22 +01:00
QOATypes.cpp LibAudio: Implement the Quite Okay Audio format 2023-03-10 04:07:14 -07:00
QOATypes.h LibAudio: Implement the Quite Okay Audio format 2023-03-10 04:07:14 -07:00
Queue.h LibAudio+Userland: Remove Audio::LegacyBuffer 2022-05-03 23:09:20 +02:00
Resampler.h LibAudio: Tolerate a file sample rate lower than the AudioServer's 2022-12-31 00:04:34 +01:00
RIFFTypes.cpp LibAudio: Load WAV metadata 2023-05-31 16:23:07 +02:00
RIFFTypes.h LibAudio: Load WAV metadata 2023-05-31 16:23:07 +02:00
Sample.h Piano: Use Sample struct from LibDSP 2023-08-04 12:56:27 +02:00
SampleFormats.cpp AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
SampleFormats.h AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
UserSampleQueue.cpp LibAudio: Prevent int overflow in the user buffer queue 2022-12-31 00:08:05 +01:00
UserSampleQueue.h Everywhere: Remove unused includes of AK/Format.h 2023-01-02 20:27:20 -05:00
VorbisComment.cpp LibAudio: Update stream APIs used when reading audio metadata 2023-03-13 12:46:42 -04:00
VorbisComment.h LibAudio: Detect and read FLAC metadata 2023-03-13 12:35:17 -04:00
WavLoader.cpp LibAudio: Use ReadonlyBytes instead of Bytes for buffer parameters 2023-07-20 08:02:12 +01:00
WavLoader.h LibAudio: Use ReadonlyBytes instead of Bytes for buffer parameters 2023-07-20 08:02:12 +01:00
WavWriter.cpp LibAudio: Handle all integer PCM sample formats "correctly" in WavWriter 2023-06-22 21:45:54 +02:00
WavWriter.h LibAudio: Handle all integer PCM sample formats "correctly" in WavWriter 2023-06-22 21:45:54 +02:00