1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 01:47:36 +00:00
serenity/Userland/Libraries
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
..
LibArchive LibArchive: Extract logic for calculating ZIP statistics 2023-07-30 22:16:40 +01:00
LibAudio LibAudio: Unlock the mutex in PulseAudioContext::instance() before exit 2023-08-07 10:40:34 -06:00
LibC LibC: Fix struct declaration visibility 2023-07-29 16:51:58 -06:00
LibCards AK: Make "foo"_string infallible 2023-08-07 16:03:27 +02:00
LibChess Userland: Rename Core::Object to Core::EventReceiver 2023-08-06 20:39:51 +02:00
LibCMake LibSyntax+Libraries: Replace TextStyle with Gfx::TextAttributes 2023-03-15 14:55:49 +01:00
LibCodeComprehension AK: Make "foo"_string infallible 2023-08-07 16:03:27 +02:00
LibCompress LibCompress/Brotli: Remove CanonicalCode::clear() 2023-07-22 07:10:47 +02:00
LibConfig Userland: Convert config listener callbacks to use StringView 2023-06-27 15:37:00 +01:00
LibCore AK: Make "foo"_string infallible 2023-08-07 16:03:27 +02:00
LibCoredump LibCoredump: Avoid unnecessary conversion to DeprecatedString 2023-05-27 17:30:55 +02:00
LibCpp Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibCrypt Everywhere: Resolve conflicts with LibC and libc++ 2023-06-27 12:40:38 +02:00
LibCrypto LibCrypto: Make create_aligned_buffer() static 2023-07-19 21:26:55 +01:00
LibDebug LibDebug: Keep track of the SetEpilogueBegin LineProgram OpCode 2023-06-27 12:40:38 +02:00
LibDesktop Everywhere: Use MonotonicTime instead of Duration 2023-05-24 23:18:07 +02:00
LibDeviceTree Everywhere: Remove unused DeprecatedString includes 2023-04-09 22:00:54 +02:00
LibDiff LibDiff+patch: Support multiple patches in a single patch file 2023-07-30 07:47:22 +01:00
LibDNS AK: Rename Stream::write_entire_buffer to Stream::write_until_depleted 2023-03-13 15:16:20 +00:00
LibDSP Piano: Cache buffers in Track and WaveWidget 2023-08-04 12:56:27 +02:00
LibEDID Everywhere: Use nested namespace qualifiers 2023-07-12 10:05:42 +03:30
LibELF Kernel: Consolidate finding the ELF stack size with validation 2023-07-10 21:08:31 -06:00
LibFileSystem LibFileSystem: Add FileSystem::is_regular_file 2023-07-13 10:29:30 +01:00
LibFileSystemAccessClient LibFSAC+Userland: Pass options for FSAC::open_file() using a struct 2023-06-11 09:40:17 +01:00
LibGemini Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibGfx LibGfx: Track edge extent in EdgeFlagPathRasterizer 2023-08-06 16:24:28 +02:00
LibGL Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibGLSL AK: Make "foo"_string infallible 2023-08-07 16:03:27 +02:00
LibGPU
LibGUI AK: Make "foo"_string infallible 2023-08-07 16:03:27 +02:00
LibHTTP AK: Serialize URL hosts with 'concept-host-serializer' 2023-07-31 05:18:51 +02:00
LibIDL LibIDL: Avoid unnecessary copies of imported paths 2023-06-15 08:09:16 +02:00
LibImageDecoderClient LibImageDecoderClient: Fix minor const-correctness issue 2023-02-21 00:54:04 +01:00
LibIMAP Userland: Rename Core::Object to Core::EventReceiver 2023-08-06 20:39:51 +02:00
LibIPC Userland: Rename Core::Object to Core::EventReceiver 2023-08-06 20:39:51 +02:00
LibJS AK: Make "foo"_string infallible 2023-08-07 16:03:27 +02:00
LibKeyboard Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibLine Userland: Rename Core::Object to Core::EventReceiver 2023-08-06 20:39:51 +02:00
LibLocale LibTimeZone+Userland: Change timezone functions to use UnixDateTime 2023-05-24 23:18:07 +02:00
LibMain
LibManual AK: Make "foo"_string infallible 2023-08-07 16:03:27 +02:00
LibMarkdown LibMarkdown: Preserve blank lines in CodeBlocks 2023-08-04 13:16:32 +02:00
LibPartition Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibPCIDB Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibPDF LibPDF: Ensure all subpaths are closed before filling paths 2023-07-25 13:42:40 +02:00
LibProtocol Ladybird: Add WebSocket server for use by Lagom networking 2023-08-03 09:55:20 +02:00
LibRegex LibRegex: Keep track of instruction positions for backwards tree jumps 2023-08-05 16:40:04 +02:00
LibSanitizer Everywhere: Resolve conflicts with LibC and libc++ 2023-06-27 12:40:38 +02:00
LibSoftGPU LibGfx+Everywhere: Change Gfx::Rect to be endpoint exclusive 2023-05-23 12:35:42 +02:00
LibSQL Userland: Rename Core::Object to Core::EventReceiver 2023-08-06 20:39:51 +02:00
LibSymbolication LibSymbolication: Use Core::File instead of Core::DeprecatedFile 2023-04-27 07:27:14 +02:00
LibSyntax Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibSystem Everywhere: Resolve conflicts with LibC and libc++ 2023-06-27 12:40:38 +02:00
LibTest test-js: Run with the JavaScript bytecode VM by default 2023-07-25 20:00:46 +02:00
LibTextCodec LibTextCodec: Add "get output encoding" from the Encoding specification 2023-06-19 06:12:26 +02:00
LibThreading LibThreading: Make Thread keep itself alive while its action is running 2023-08-07 10:40:34 -06:00
LibTimeZone Everywhere: Resolve conflicts with LibC and libc++ 2023-06-27 12:40:38 +02:00
LibTLS LibTLS: Allow applications to provide a custom default CA Cert path 2023-08-02 05:44:43 +02:00
LibUnicode LibUnicode: Perform code point case conversion lookups in constant time 2023-07-28 05:28:50 +02:00
LibUSBDB Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibVideo Userland: Rename Core::Object to Core::EventReceiver 2023-08-06 20:39:51 +02:00
LibVirtGPU Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibVT Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LibWasm LibWasm: Implement Element section segment type 4 2023-07-08 15:13:25 +02:00
LibWeb AK: Make "foo"_fly_string infallible 2023-08-07 16:03:27 +02:00
LibWebSocket Userland: Rename Core::Object to Core::EventReceiver 2023-08-06 20:39:51 +02:00
LibWebView LibWebView: Create BGRA bitmaps instead of BGRx 2023-08-03 15:49:47 +01:00
LibX86
LibXML LibXML: Actually append resolved references when parsing content 2023-07-23 16:09:12 +02:00
CMakeLists.txt LibFileSystem: Create LibFileSystem 2023-03-21 19:03:21 +00:00