]> Repos - portaudio/commitdiff
wasapi: replaced InterlockedCompareExchange with InterlockedOr and added clarifying...
authordmitrykos <dmitrykos@neutroncode.com>
Fri, 26 Aug 2016 19:31:45 +0000 (22:31 +0300)
committerdmitrykos <dmitrykos@neutroncode.com>
Fri, 26 Aug 2016 19:31:45 +0000 (22:31 +0300)
src/hostapi/wasapi/pa_win_wasapi.c

index be3115a2cb26f6b5968e32a85fbd37f6d95c1c38..e865c7bf6366d4330f294bb7a09c5a01495000ab 100644 (file)
@@ -1367,7 +1367,8 @@ static HRESULT ActivateAudioInterface_WINRT(const PaWasapiDeviceInfo *deviceInfo
     IF_FAILED_INTERNAL_ERROR_JUMP(hr, result, error);
 
        // Wait in busy loop for async operation to complete
-       while (SUCCEEDED(hr) && !InterlockedCompareExchange(&handlerImpl->done, FALSE, FALSE))
+       // Use Interlocked API here to ensure that ->done variable is read every time through the loop
+       while (SUCCEEDED(hr) && !InterlockedOr(&handlerImpl->done, 0))
        {
                Sleep(1);
        }