diff --git a/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp b/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp index d7de74c42d..c461847b32 100644 --- a/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp +++ b/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp @@ -1244,14 +1244,14 @@ public: while (! threadShouldExit()) { - if (outputDevice != nullptr && outputDevice->shouldClose) + if ((outputDevice != nullptr && outputDevice->shouldClose) + || (inputDevice != nullptr && inputDevice->shouldClose)) + { deviceBecameInactive = true; + } if (inputDevice != nullptr && ! deviceBecameInactive) { - if (inputDevice->shouldClose) - deviceBecameInactive = true; - if (outputDevice == nullptr) { if (WaitForSingleObject (inputDevice->clientEvent, 1000) == WAIT_TIMEOUT) @@ -1372,8 +1372,11 @@ private: { if (deviceBecameInactive) { - deviceBecameInactive = false; - MessageManager::callAsync ([this] { reopenDevices(); }); + MessageManager::callAsync ([this] + { + close(); + reopenDevices(); + }); } };