make WASAPI instantiation errors non-fatal for older Windows
authorJP Cimalando <jpcima@users.noreply.github.com>
Sun, 13 May 2018 12:14:04 +0000 (14:14 +0200)
committerJP Cimalando <jpcima@users.noreply.github.com>
Sun, 13 May 2018 12:14:04 +0000 (14:14 +0200)
RtAudio.cpp

index b091e15782690a0324a29b2f6b91e90f4e8f20a4..34e396108b34e1797dda3aa4f9b86b7cce892ab1 100644 (file)
@@ -3899,10 +3899,9 @@ RtApiWasapi::RtApiWasapi()
                          CLSCTX_ALL, __uuidof( IMMDeviceEnumerator ),
                          ( void** ) &deviceEnumerator_ );
 
-  if ( FAILED( hr ) ) {
-    errorText_ = "RtApiWasapi::RtApiWasapi: Unable to instantiate device enumerator";
-    error( RtAudioError::DRIVER_ERROR );
-  }
+  // If this runs on an old Windows, it will fail. Ignore and proceed.
+  if ( FAILED( hr ) )
+    deviceEnumerator_ = NULL;
 }
 
 //-----------------------------------------------------------------------------
@@ -3929,6 +3928,9 @@ unsigned int RtApiWasapi::getDeviceCount( void )
   IMMDeviceCollection* captureDevices = NULL;
   IMMDeviceCollection* renderDevices = NULL;
 
+  if ( !deviceEnumerator_ )
+    return 0;
+
   // Count capture devices
   errorText_.clear();
   HRESULT hr = deviceEnumerator_->EnumAudioEndpoints( eCapture, DEVICE_STATE_ACTIVE, &captureDevices );