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
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