diff --git a/libraries/audio-client/src/AudioPeakValues.cpp b/libraries/audio-client/src/AudioPeakValues.cpp index 3df469b830..0b8921a117 100644 --- a/libraries/audio-client/src/AudioPeakValues.cpp +++ b/libraries/audio-client/src/AudioPeakValues.cpp @@ -43,14 +43,19 @@ void AudioClient::checkPeakValues() { // prepare the windows environment CoInitialize(NULL); + std::unique_lock lock(_deviceMutex, std::defer_lock); + // if disabled, clean up active clients if (!_enablePeakValues) { - activeClients.clear(); + if (lock.try_lock()) { + // deferred, if timer callbacks overlap + activeClients.clear(); + } return; } // lock the devices so the _inputDevices list is static - std::unique_lock lock(_deviceMutex); + lock.lock(); HRESULT result; // initialize the payload