changeset 163:5cc1366da2e9

Apply patch from Tim Bunnell on PortAudio mailing list (2016-12-28, Mac 10.11 deprecation warning)
author Chris Cannam <cannam@all-day-breakfast.com>
date Wed, 30 Oct 2019 11:28:45 +0000
parents d43aab368df9
children 9fa11135915a 7e6e71a29886
files src/portaudio_20161030_catalina_patch/src/hostapi/coreaudio/pa_mac_core.c src/portaudio_20161030_catalina_patch/src/hostapi/coreaudio/pa_mac_core_internal.h
diffstat 2 files changed, 47 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/portaudio_20161030_catalina_patch/src/hostapi/coreaudio/pa_mac_core.c	Wed Oct 30 11:25:10 2019 +0000
+++ b/src/portaudio_20161030_catalina_patch/src/hostapi/coreaudio/pa_mac_core.c	Wed Oct 30 11:28:45 2019 +0000
@@ -299,7 +299,11 @@
                                    UInt32 *actualInputFramesPerBuffer,
                                    UInt32 *actualOutputFramesPerBuffer,
                                    const PaMacAUHAL *auhalHostApi,
+#ifndef AUDIO_COMPONENT_FIX
                                    AudioUnit *audioUnit,
+#else
+                                   AudioComponentInstance *audioUnit,
+#endif
                                    AudioConverterRef *srConverter,
                                    AudioDeviceID *audioDevice,
                                    const double sampleRate,
@@ -314,7 +318,11 @@
  */
 static void startStopCallback(
    void *               inRefCon,
+#ifndef AUDIO_COMPONENT_FIX
    AudioUnit            ci,
+#else
+   AudioComponentInstance            ci,
+#endif
    AudioUnitPropertyID  inID,
    AudioUnitScope       inScope,
    AudioUnitElement     inElement )
@@ -1167,14 +1175,23 @@
                                    UInt32 *actualInputFramesPerBuffer,
                                    UInt32 *actualOutputFramesPerBuffer,
                                    const PaMacAUHAL *auhalHostApi,
+#ifndef AUDIO_COMPONENT_FIX
                                    AudioUnit *audioUnit,
+#else
+                                   AudioComponentInstance *audioUnit,
+#endif
                                    AudioConverterRef *srConverter,
                                    AudioDeviceID *audioDevice,
                                    const double sampleRate,
                                    void *refCon )
 {
+#ifndef AUDIO_COMPONENT_FIX
     ComponentDescription desc;
     Component comp;
+#else
+    AudioComponentDescription desc;
+    AudioComponent comp;
+#endif
     /*An Apple TN suggests using CAStreamBasicDescription, but that is C++*/
     AudioStreamBasicDescription desiredFormat;
     OSStatus result = noErr;
@@ -1244,8 +1261,13 @@
     desc.componentManufacturer = kAudioUnitManufacturer_Apple;
     desc.componentFlags        = 0;
     desc.componentFlagsMask    = 0;
+
     /* -- find the component -- */
+#ifndef AUDIO_COMPONENT_FIX
     comp = FindNextComponent( NULL, &desc );
+#else
+    comp = AudioComponentFindNext( NULL, &desc );
+#endif
     if( !comp )
     {
        DBUG( ( "AUHAL component not found." ) );
@@ -1254,7 +1276,11 @@
        return paUnanticipatedHostError;
     }
     /* -- open it -- */
-    result = OpenAComponent( comp, audioUnit );
+#ifndef AUDIO_COMPONENT_FIX
+		result = OpenAComponent(comp, audioUnit);
+#else
+		result = AudioComponentInstanceNew(comp, audioUnit);
+#endif
     if( result )
     {
        DBUG( ( "Failed to open AUHAL component." ) );
@@ -1607,7 +1633,11 @@
 #undef ERR_WRAP
 
     error:
+#ifndef AUDIO_COMPONENT_FIX
        CloseComponent( *audioUnit );
+#else
+       AudioComponentInstanceDispose( *audioUnit );
+#endif
        *audioUnit = NULL;
        if( result )
           return PaMacCore_SetError( result, line, 1 );
@@ -2645,13 +2675,21 @@
        }
        if( stream->outputUnit && stream->outputUnit != stream->inputUnit ) {
           AudioUnitUninitialize( stream->outputUnit );
+#ifndef AUDIO_COMPONENT_FIX
           CloseComponent( stream->outputUnit );
+#else
+          AudioComponentInstanceDispose( stream->outputUnit );
+#endif
        }
        stream->outputUnit = NULL;
        if( stream->inputUnit )
        {
           AudioUnitUninitialize( stream->inputUnit );
+#ifndef AUDIO_COMPONENT_FIX
           CloseComponent( stream->inputUnit );
+#else
+          AudioComponentInstanceDispose( stream->inputUnit );
+#endif
           stream->inputUnit = NULL;
        }
        if( stream->inputRingBuffer.buffer )
--- a/src/portaudio_20161030_catalina_patch/src/hostapi/coreaudio/pa_mac_core_internal.h	Wed Oct 30 11:25:10 2019 +0000
+++ b/src/portaudio_20161030_catalina_patch/src/hostapi/coreaudio/pa_mac_core_internal.h	Wed Oct 30 11:28:45 2019 +0000
@@ -63,6 +63,9 @@
 
 #include <CoreAudio/CoreAudio.h>
 #include <CoreServices/CoreServices.h>
+#ifdef AUDIO_COMPONENT_FIX
+#include <AudioUnit/AudioComponent.h>
+#endif
 #include <AudioUnit/AudioUnit.h>
 #include <AudioToolbox/AudioToolbox.h>
 
@@ -139,8 +142,13 @@
 
     /* implementation specific data goes here */
     bool bufferProcessorIsInitialized;
+#ifndef AUDIO_COMPONENT_FIX
     AudioUnit inputUnit;
     AudioUnit outputUnit;
+#else
+    AudioComponentInstance inputUnit;
+    AudioComponentInstance outputUnit;
+#endif
     AudioDeviceID inputDevice;
     AudioDeviceID outputDevice;
     size_t userInChan;