Move stream_.state update to the end of wasapiThread()
[rtaudio-cdist.git] / RtAudio.cpp
index 1be15fd1d1140c5615424fe9f789794835ae37c6..18e900e8fbc73402359c554f418b1a9fb9528b4a 100644 (file)
@@ -1,4 +1,4 @@
-/************************************************************************/
+/************************************************************************/
 /*! \class RtAudio
     \brief Realtime audio i/o C++ classes.
 
@@ -3697,11 +3697,13 @@ static const char* getAsioErrorString( ASIOError result )
 #include <mfapi.h>
 #include <mferror.h>
 #include <mfplay.h>
-#include <Wmcodecdsp.h>
+#include <wmcodecdsp.h>
 
-#pragma comment( lib, "mfplat.lib" )
-#pragma comment( lib, "mfuuid.lib" )
-#pragma comment( lib, "wmcodecdspuuid" )
+#ifdef _MSC_VER
+  #pragma comment( lib, "mfplat.lib" )
+  #pragma comment( lib, "mfuuid.lib" )
+  #pragma comment( lib, "wmcodecdspuuid" )
+#endif
 
 //=============================================================================
 
@@ -3907,7 +3909,7 @@ public:
     _transformUnk->QueryInterface( IID_PPV_ARGS( &_resamplerProps ) );
     _resamplerProps->SetHalfFilterLength( 60 ); // best conversion quality
 
-                                                // 3. Specify input / output format
+    // 3. Specify input / output format
 
     MFCreateMediaType( &_mediaType );
     _mediaType->SetGUID( MF_MT_MAJOR_TYPE, MFMediaType_Audio );
@@ -5096,7 +5098,7 @@ void RtApiWasapi::wasapiThread()
           }
 
           // Convert callback buffer to user sample rate
-          unsigned int deviceBufferOffset = convBufferSize * stream_.nDeviceChannels[INPUT] * formatBytes( stream_.userFormat );
+          unsigned int deviceBufferOffset = convBufferSize * stream_.nDeviceChannels[INPUT] * formatBytes( stream_.deviceFormat[INPUT] );
           unsigned int convSamples = 0;
 
           captureResampler->Convert( stream_.deviceBuffer + deviceBufferOffset,
@@ -5364,13 +5366,11 @@ Exit:
 
   CoUninitialize();
 
+  if ( !errorText_.empty() )
+    error( errorType );
+
   // update stream state
   stream_.state = STREAM_STOPPED;
-
-  if ( errorText_.empty() )
-    return;
-  else
-    error( errorType );
 }
 
 //******************** End of __WINDOWS_WASAPI__ *********************//