| @@ -4606,26 +4606,6 @@ void RtApiWasapi::stopStream( void ) | |||
| // Wait for the last buffer to play before stopping. | |||
| Sleep( 1000 * stream_.bufferSize / stream_.sampleRate ); | |||
| // stop capture client if applicable | |||
| if ( ( ( WasapiHandle* ) stream_.apiHandle )->captureAudioClient ) { | |||
| HRESULT hr = ( ( WasapiHandle* ) stream_.apiHandle )->captureAudioClient->Stop(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText_ = "RtApiWasapi::stopStream: Unable to stop capture stream."; | |||
| error( RtAudioError::DRIVER_ERROR ); | |||
| return; | |||
| } | |||
| } | |||
| // stop render client if applicable | |||
| if ( ( ( WasapiHandle* ) stream_.apiHandle )->renderAudioClient ) { | |||
| HRESULT hr = ( ( WasapiHandle* ) stream_.apiHandle )->renderAudioClient->Stop(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText_ = "RtApiWasapi::stopStream: Unable to stop render stream."; | |||
| error( RtAudioError::DRIVER_ERROR ); | |||
| return; | |||
| } | |||
| } | |||
| // close thread handle | |||
| if ( stream_.callbackInfo.thread && !CloseHandle( ( void* ) stream_.callbackInfo.thread ) ) { | |||
| errorText_ = "RtApiWasapi::stopStream: Unable to close callback thread."; | |||
| @@ -4656,26 +4636,6 @@ void RtApiWasapi::abortStream( void ) | |||
| Sleep( 1 ); | |||
| } | |||
| // stop capture client if applicable | |||
| if ( ( ( WasapiHandle* ) stream_.apiHandle )->captureAudioClient ) { | |||
| HRESULT hr = ( ( WasapiHandle* ) stream_.apiHandle )->captureAudioClient->Stop(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText_ = "RtApiWasapi::abortStream: Unable to stop capture stream."; | |||
| error( RtAudioError::DRIVER_ERROR ); | |||
| return; | |||
| } | |||
| } | |||
| // stop render client if applicable | |||
| if ( ( ( WasapiHandle* ) stream_.apiHandle )->renderAudioClient ) { | |||
| HRESULT hr = ( ( WasapiHandle* ) stream_.apiHandle )->renderAudioClient->Stop(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText_ = "RtApiWasapi::abortStream: Unable to stop render stream."; | |||
| error( RtAudioError::DRIVER_ERROR ); | |||
| return; | |||
| } | |||
| } | |||
| // close thread handle | |||
| if ( stream_.callbackInfo.thread && !CloseHandle( ( void* ) stream_.callbackInfo.thread ) ) { | |||
| errorText_ = "RtApiWasapi::abortStream: Unable to close callback thread."; | |||
| @@ -5058,6 +5018,20 @@ void RtApiWasapi::wasapiThread() | |||
| } | |||
| ( ( WasapiHandle* ) stream_.apiHandle )->captureClient = captureClient; | |||
| // reset the capture stream | |||
| hr = captureAudioClient->Reset(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText = "RtApiWasapi::wasapiThread: Unable to reset capture stream."; | |||
| goto Exit; | |||
| } | |||
| // start the capture stream | |||
| hr = captureAudioClient->Start(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText = "RtApiWasapi::wasapiThread: Unable to start capture stream."; | |||
| goto Exit; | |||
| } | |||
| } | |||
| unsigned int inBufferSize = 0; | |||
| @@ -5073,20 +5047,6 @@ void RtApiWasapi::wasapiThread() | |||
| // set captureBuffer size | |||
| captureBuffer.setBufferSize( inBufferSize + outBufferSize, formatBytes( stream_.deviceFormat[INPUT] ) ); | |||
| // reset the capture stream | |||
| hr = captureAudioClient->Reset(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText = "RtApiWasapi::wasapiThread: Unable to reset capture stream."; | |||
| goto Exit; | |||
| } | |||
| // start the capture stream | |||
| hr = captureAudioClient->Start(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText = "RtApiWasapi::wasapiThread: Unable to start capture stream."; | |||
| goto Exit; | |||
| } | |||
| } | |||
| // start render stream if applicable | |||
| @@ -5139,6 +5099,20 @@ void RtApiWasapi::wasapiThread() | |||
| ( ( WasapiHandle* ) stream_.apiHandle )->renderClient = renderClient; | |||
| ( ( WasapiHandle* ) stream_.apiHandle )->renderEvent = renderEvent; | |||
| // reset the render stream | |||
| hr = renderAudioClient->Reset(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText = "RtApiWasapi::wasapiThread: Unable to reset render stream."; | |||
| goto Exit; | |||
| } | |||
| // start the render stream | |||
| hr = renderAudioClient->Start(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText = "RtApiWasapi::wasapiThread: Unable to start render stream."; | |||
| goto Exit; | |||
| } | |||
| } | |||
| unsigned int outBufferSize = 0; | |||
| @@ -5154,20 +5128,6 @@ void RtApiWasapi::wasapiThread() | |||
| // set renderBuffer size | |||
| renderBuffer.setBufferSize( inBufferSize + outBufferSize, formatBytes( stream_.deviceFormat[OUTPUT] ) ); | |||
| // reset the render stream | |||
| hr = renderAudioClient->Reset(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText = "RtApiWasapi::wasapiThread: Unable to reset render stream."; | |||
| goto Exit; | |||
| } | |||
| // start the render stream | |||
| hr = renderAudioClient->Start(); | |||
| if ( FAILED( hr ) ) { | |||
| errorText = "RtApiWasapi::wasapiThread: Unable to start render stream."; | |||
| goto Exit; | |||
| } | |||
| } | |||
| // malloc buffer memory | |||