]> Repos - portaudio/commitdiff
Replace usage of deprecated component manager APIs on 10.6+
authorHool, Rory <hoolrory@gmail.com>
Thu, 22 Oct 2020 17:53:56 +0000 (13:53 -0400)
committerHool, Rory <hoolrory@gmail.com>
Thu, 22 Oct 2020 17:53:56 +0000 (13:53 -0400)
These APIs are deprecated in 10.8+ and are disabled on 11.0(10.16)+ https://developer.apple.com/documentation/coreservices/carbon_core/component_manager?language=objc
> "This application, or a library it uses, is using the deprecated Component Manager for hosting Audio Components. This is not supported when rebuilding against the 10.16 or later SDK. Also, this makes the host incompatible with version 3 audio units. Please transition to the API's in AudioComponent.h."

src/hostapi/coreaudio/pa_mac_core.c

index 257e9dedc3f66248b1108537d63bae7128c5e87f..a0eb6fd4cc8e7dfcd5b967bb1c2cc85b7242c85c 100644 (file)
@@ -1173,8 +1173,13 @@ static PaError OpenAndSetupOneAudioUnit(
                                    const double sampleRate,
                                    void *refCon )
 {
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+    AudioComponentDescription desc;
+    AudioComponent comp;
+#else
     ComponentDescription desc;
     Component comp;
+#endif
     /*An Apple TN suggests using CAStreamBasicDescription, but that is C++*/
     AudioStreamBasicDescription desiredFormat;
     OSStatus result = noErr;
@@ -1245,7 +1250,11 @@ static PaError OpenAndSetupOneAudioUnit(
     desc.componentFlags        = 0;
     desc.componentFlagsMask    = 0;
     /* -- find the component -- */
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+    comp = AudioComponentFindNext( NULL, &desc );
+#else
     comp = FindNextComponent( NULL, &desc );
+#endif
     if( !comp )
     {
        DBUG( ( "AUHAL component not found." ) );
@@ -1254,7 +1263,11 @@ static PaError OpenAndSetupOneAudioUnit(
        return paUnanticipatedHostError;
     }
     /* -- open it -- */
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+    result = AudioComponentInstanceNew( comp, audioUnit );
+#else
     result = OpenAComponent( comp, audioUnit );
+#endif
     if( result )
     {
        DBUG( ( "Failed to open AUHAL component." ) );
@@ -1607,7 +1620,12 @@ static PaError OpenAndSetupOneAudioUnit(
 #undef ERR_WRAP
 
     error:
+
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+       AudioComponentInstanceDispose( *audioUnit );
+#else
        CloseComponent( *audioUnit );
+#endif
        *audioUnit = NULL;
        if( result )
           return PaMacCore_SetError( result, line, 1 );
@@ -2645,13 +2663,21 @@ static PaError CloseStream( PaStream* s )
        }
        if( stream->outputUnit && stream->outputUnit != stream->inputUnit ) {
           AudioUnitUninitialize( stream->outputUnit );
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+          AudioComponentInstanceDispose( stream->outputUnit );
+#else
           CloseComponent( stream->outputUnit );
+#endif
        }
        stream->outputUnit = NULL;
        if( stream->inputUnit )
        {
           AudioUnitUninitialize( stream->inputUnit );
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+          AudioComponentInstanceDispose( stream->inputUnit );
+#else
           CloseComponent( stream->inputUnit );
+#endif
           stream->inputUnit = NULL;
        }
        if( stream->inputRingBuffer.buffer )