From b1a09028525629a5d7dc9bc4189264e729f47ed8 Mon Sep 17 00:00:00 2001 From: "Hool, Rory" Date: Thu, 22 Oct 2020 13:53:56 -0400 Subject: [PATCH] Replace usage of deprecated component manager APIs on 10.6+ 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 | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/hostapi/coreaudio/pa_mac_core.c b/src/hostapi/coreaudio/pa_mac_core.c index 257e9de..a0eb6fd 100644 --- a/src/hostapi/coreaudio/pa_mac_core.c +++ b/src/hostapi/coreaudio/pa_mac_core.c @@ -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 ) -- 2.43.0