diff --git a/lib-src/portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c b/lib-src/portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c index 93e1d612a..f64049ad5 100644 --- a/lib-src/portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c +++ b/lib-src/portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c @@ -576,6 +576,9 @@ typedef struct PaWasapiStream // thread is being started volatile BOOL running; + // stream has not or is no longer started + BOOL stopped; + PA_THREAD_ID dwThreadId; HANDLE hThread; HANDLE hCloseRequest; @@ -3550,6 +3553,9 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, if (framesPerBuffer == 0) framesPerBuffer = ((UINT32)sampleRate / 100) * 2; + stream->stopped = TRUE; + stream->running = FALSE; + // Try create device: Input if (inputParameters != NULL) { @@ -4275,6 +4281,7 @@ static PaError StartStream( PaStream *s ) // Signal: stream running. stream->running = TRUE; } + stream->stopped = FALSE; return result; @@ -4316,6 +4323,7 @@ void _StreamFinish(PaWasapiStream *stream) _StreamCleanup(stream); stream->running = FALSE; + stream->stopped = TRUE; } // ------------------------------------------------------------------------------------------ @@ -4349,7 +4357,7 @@ static PaError AbortStream( PaStream *s ) // ------------------------------------------------------------------------------------------ static PaError IsStreamStopped( PaStream *s ) { - return !((PaWasapiStream *)s)->running; + return ((PaWasapiStream *)s)->stopped; } // ------------------------------------------------------------------------------------------ diff --git a/lib-src/portaudio-v19/wasapi-fix.patch b/lib-src/portaudio-v19/wasapi-fix.patch index 6bcb401ca..8112818e6 100644 --- a/lib-src/portaudio-v19/wasapi-fix.patch +++ b/lib-src/portaudio-v19/wasapi-fix.patch @@ -1,8 +1,8 @@ diff --git a/lib-src/portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c b/lib-src/portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c -index de05d72..0026033 100644 +index 93e1d612a..f64049ad5 100644 --- a/lib-src/portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c +++ b/lib-src/portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c -@@ -499,6 +499,9 @@ typedef struct PaWasapiStream +@@ -576,6 +576,9 @@ typedef struct PaWasapiStream // thread is being started volatile BOOL running; @@ -12,7 +12,7 @@ index de05d72..0026033 100644 PA_THREAD_ID dwThreadId; HANDLE hThread; HANDLE hCloseRequest; -@@ -2882,6 +2885,9 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, +@@ -3550,6 +3553,9 @@ static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi, if (framesPerBuffer == 0) framesPerBuffer = ((UINT32)sampleRate / 100) * 2; @@ -22,7 +22,7 @@ index de05d72..0026033 100644 // Try create device: Input if (inputParameters != NULL) { -@@ -3546,6 +3552,7 @@ static PaError StartStream( PaStream *s ) +@@ -4275,6 +4281,7 @@ static PaError StartStream( PaStream *s ) // Signal: stream running. stream->running = TRUE; } @@ -30,7 +30,7 @@ index de05d72..0026033 100644 return result; -@@ -3587,6 +3594,7 @@ void _StreamFinish(PaWasapiStream *stream) +@@ -4316,6 +4323,7 @@ void _StreamFinish(PaWasapiStream *stream) _StreamCleanup(stream); stream->running = FALSE; @@ -38,7 +38,7 @@ index de05d72..0026033 100644 } // ------------------------------------------------------------------------------------------ -@@ -3620,7 +3628,7 @@ static PaError AbortStream( PaStream *s ) +@@ -4349,7 +4357,7 @@ static PaError AbortStream( PaStream *s ) // ------------------------------------------------------------------------------------------ static PaError IsStreamStopped( PaStream *s ) {