From 8b4ba1ff25c186539d3fed59621f47282b64096c Mon Sep 17 00:00:00 2001 From: ed Date: Fri, 14 Feb 2020 10:19:03 +0000 Subject: [PATCH] Fixed an issue in 9fda031 --- .../audio_io/juce_AudioDeviceManager.cpp | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp b/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp index 62fe1a1f42..823a1b209b 100644 --- a/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp +++ b/modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp @@ -124,18 +124,29 @@ void AudioDeviceManager::audioDeviceListChanged() { if (currentAudioDevice != nullptr) { - auto isCurrentDeviceStillAvailable = [&] + auto currentDeviceStillAvailable = [&] { - for (auto* dt : availableDeviceTypes) - if (currentAudioDevice->getTypeName() == dt->getTypeName()) - for (auto& dn : dt->getDeviceNames (true)) - if (currentAudioDevice->getName() == dn) + auto currentTypeName = currentAudioDevice->getTypeName(); + auto currentDeviceName = currentAudioDevice->getName(); + + for (auto* deviceType : availableDeviceTypes) + { + if (currentTypeName == deviceType->getTypeName()) + { + for (auto& deviceName : deviceType->getDeviceNames (true)) + if (currentDeviceName == deviceName) return true; - return false; - }; + for (auto& deviceName : deviceType->getDeviceNames (false)) + if (currentDeviceName == deviceName) + return true; + } + } - if (! isCurrentDeviceStillAvailable()) + return false; + }(); + + if (! currentDeviceStillAvailable) { closeAudioDevice();