From 167bdce48d1656569cf63448fc2328800288c38f Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 30 Mar 2020 13:50:50 -0700 Subject: Hold the ListLock while opening a device Since it may rely on the enumerated device list that could be updated asynchronously. --- alc/alc.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/alc/alc.cpp b/alc/alc.cpp index 1bb859f7..691b9274 100644 --- a/alc/alc.cpp +++ b/alc/alc.cpp @@ -3700,6 +3700,7 @@ START_API_FUNC try { auto backend = PlaybackFactory->createBackend(device.get(), BackendType::Playback); + std::lock_guard _{ListLock}; backend->open(deviceName); device->Backend = std::move(backend); } @@ -3960,6 +3961,7 @@ START_API_FUNC device->Frequency, device->UpdateSize, device->BufferSize); auto backend = CaptureFactory->createBackend(device.get(), BackendType::Capture); + std::lock_guard _{ListLock}; backend->open(deviceName); device->Backend = std::move(backend); } -- cgit v1.2.3