]> git.sesse.net Git - mlt/commitdiff
fix multiple rtaudio consumers on OSX
authorDan Dennedy <dan@dennedy.org>
Sun, 4 Dec 2011 21:02:17 +0000 (13:02 -0800)
committerDan Dennedy <dan@dennedy.org>
Tue, 6 Dec 2011 04:57:12 +0000 (20:57 -0800)
src/modules/rtaudio/RtAudio.cpp

index e0a88831b1bf60df518b1a531b5c7d2f4775d062..f01ed4e1ea7c21eb8bebf3f2b7eff552141885eb 100644 (file)
@@ -397,9 +397,7 @@ unsigned int RtApi :: getStreamSampleRate( void )
 // implementation.\r
 struct CoreHandle {\r
   AudioDeviceID id[2];    // device ids\r
-#if defined( MAC_OS_X_VERSION_10_5 ) && ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 )\r
   AudioDeviceIOProcID procId[2];\r
-#endif\r
   UInt32 iStream[2];      // device stream index (or first if using multiple)\r
   UInt32 nStreams[2];     // number of streams to use\r
   bool xrun[2];\r
@@ -414,7 +412,6 @@ struct CoreHandle {
 \r
 RtApiCore:: RtApiCore()\r
 {\r
-#if defined( AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER )\r
   // This is a largely undocumented but absolutely necessary\r
   // requirement starting with OS-X 10.6.  If not called, queries and\r
   // updates to various audio device properties are not handled\r
@@ -428,7 +425,6 @@ RtApiCore:: RtApiCore()
     errorText_ = "RtApiCore::RtApiCore: error setting run loop property!";\r
     error( RtError::WARNING );\r
   }\r
-#endif\r
 }\r
 \r
 RtApiCore :: ~RtApiCore()\r
@@ -1245,12 +1241,7 @@ bool RtApiCore :: probeDeviceOpen( unsigned int device, StreamMode mode, unsigne
     // Only one callback procedure per device.\r
     stream_.mode = DUPLEX;\r
   else {\r
-#if defined( MAC_OS_X_VERSION_10_5 ) && ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 )\r
     result = AudioDeviceCreateIOProcID( id, callbackHandler, (void *) &stream_.callbackInfo, &handle->procId[mode] );\r
-#else\r
-    // deprecated in favor of AudioDeviceCreateIOProcID()\r
-    result = AudioDeviceAddIOProc( id, callbackHandler, (void *) &stream_.callbackInfo );\r
-#endif\r
     if ( result != noErr ) {\r
       errorStream_ << "RtApiCore::probeDeviceOpen: system error setting callback for device (" << device << ").";\r
       errorText_ = errorStream_.str();\r
@@ -1301,24 +1292,14 @@ void RtApiCore :: closeStream( void )
   CoreHandle *handle = (CoreHandle *) stream_.apiHandle;\r
   if ( stream_.mode == OUTPUT || stream_.mode == DUPLEX ) {\r
     if ( stream_.state == STREAM_RUNNING )\r
-      AudioDeviceStop( handle->id[0], callbackHandler );\r
-#if defined( MAC_OS_X_VERSION_10_5 ) && ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 )\r
+      AudioDeviceStop( handle->id[0], handle->procId[0] );\r
     AudioDeviceDestroyIOProcID( handle->id[0], handle->procId[0] );\r
-#else\r
-    // deprecated in favor of AudioDeviceDestroyIOProcID()\r
-    AudioDeviceRemoveIOProc( handle->id[0], callbackHandler );\r
-#endif\r
   }\r
 \r
   if ( stream_.mode == INPUT || ( stream_.mode == DUPLEX && stream_.device[0] != stream_.device[1] ) ) {\r
     if ( stream_.state == STREAM_RUNNING )\r
-      AudioDeviceStop( handle->id[1], callbackHandler );\r
-#if defined( MAC_OS_X_VERSION_10_5 ) && ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 )\r
+      AudioDeviceStop( handle->id[1], handle->procId[1] );\r
     AudioDeviceDestroyIOProcID( handle->id[1], handle->procId[1] );\r
-#else\r
-    // deprecated in favor of AudioDeviceDestroyIOProcID()\r
-    AudioDeviceRemoveIOProc( handle->id[1], callbackHandler );\r
-#endif\r
   }\r
 \r
   for ( int i=0; i<2; i++ ) {\r
@@ -1357,7 +1338,7 @@ void RtApiCore :: startStream( void )
   CoreHandle *handle = (CoreHandle *) stream_.apiHandle;\r
   if ( stream_.mode == OUTPUT || stream_.mode == DUPLEX ) {\r
 \r
-    result = AudioDeviceStart( handle->id[0], callbackHandler );\r
+    result = AudioDeviceStart( handle->id[0], handle->procId[0] );\r
     if ( result != noErr ) {\r
       errorStream_ << "RtApiCore::startStream: system error (" << getErrorCode( result ) << ") starting callback procedure on device (" << stream_.device[0] << ").";\r
       errorText_ = errorStream_.str();\r
@@ -1368,7 +1349,7 @@ void RtApiCore :: startStream( void )
   if ( stream_.mode == INPUT ||\r
        ( stream_.mode == DUPLEX && stream_.device[0] != stream_.device[1] ) ) {\r
 \r
-    result = AudioDeviceStart( handle->id[1], callbackHandler );\r
+    result = AudioDeviceStart( handle->id[1], handle->procId[1] );\r
     if ( result != noErr ) {\r
       errorStream_ << "RtApiCore::startStream: system error starting input callback procedure on device (" << stream_.device[1] << ").";\r
       errorText_ = errorStream_.str();\r