From: Hool, Rory Date: Thu, 22 Oct 2020 17:53:56 +0000 (-0400) Subject: Replace usage of deprecated component manager APIs on 10.6+ X-Git-Tag: v19.7.0~94^2 X-Git-Url: https://andrewgundersen.net/repos?a=commitdiff_plain;h=b1a09028525629a5d7dc9bc4189264e729f47ed8;p=portaudio 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." --- 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 )