]> Repos - portaudio/commitdiff
+++ wasapi: Event-driven/Full-Duplex/Exclusive mode will be calling user-provided...
authordmitrykos <dmitrykos@0f58301d-fd10-0410-b4af-bbb618454e57>
Fri, 26 Feb 2010 08:57:44 +0000 (08:57 +0000)
committerdmitrykos <dmitrykos@0f58301d-fd10-0410-b4af-bbb618454e57>
Fri, 26 Feb 2010 08:57:44 +0000 (08:57 +0000)
src/hostapi/wasapi/pa_win_wasapi.cpp

index a3a4bb12e1cb7db39d6bc4e49660a3468b78bffb..a3bbcf45e48bd2cf54812dfea342ee1d9e12649d 100644 (file)
@@ -2820,6 +2820,14 @@ PA_THREAD_FUNC ProcThreadEvent(void *param)
        BOOL bInitOutput = FALSE;\r
     PaWasapiStream *stream = (PaWasapiStream *)param;\r
 \r
+       // Waiting on all events in case of Full-Duplex/Exclusive mode.\r
+       BOOL bWaitAllEvents = FALSE;\r
+       if ((stream->in.client != NULL) && (stream->out.client != NULL))\r
+       {\r
+               bWaitAllEvents = (stream->in.shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE) &&\r
+                       (stream->out.shareMode == AUDCLNT_SHAREMODE_EXCLUSIVE);\r
+       }\r
+\r
     // Setup data processors\r
     PaWasapiHostProcessor defaultProcessor;\r
     defaultProcessor.processor = WaspiHostProcessingLoop;\r
@@ -2879,7 +2887,7 @@ PA_THREAD_FUNC ProcThreadEvent(void *param)
        for (;;)\r
     {\r
            // 2 sec timeout\r
-        dwResult = WaitForMultipleObjects(S_COUNT, event, FALSE, 10000);\r
+        dwResult = WaitForMultipleObjects(S_COUNT, event, bWaitAllEvents, 10000);\r
 \r
                // Check for close event (after wait for buffers to avoid any calls to user\r
                // callback when hCloseRequest was set)\r