diff --git a/miniaudio.h b/miniaudio.h index 7d7343ea..e40d068b 100644 --- a/miniaudio.h +++ b/miniaudio.h @@ -2170,6 +2170,7 @@ struct ma_context { ma_handle hCoreFoundation; ma_proc CFStringGetCString; + ma_proc CFRelease; ma_handle hCoreAudio; ma_proc AudioObjectGetPropertyData; @@ -17247,6 +17248,7 @@ Core Audio Backend /* CoreFoundation */ typedef Boolean (* ma_CFStringGetCString_proc)(CFStringRef theString, char* buffer, CFIndex bufferSize, CFStringEncoding encoding); +typedef void (* ma_CFRelease_proc)(CFTypeRef cf); /* CoreAudio */ #if defined(MA_APPLE_DESKTOP) @@ -17675,6 +17677,7 @@ ma_result ma_get_AudioObject_uid(ma_context* pContext, AudioObjectID objectID, s return MA_ERROR; } + ((ma_CFRelease_proc)pContext->coreaudio.CFRelease)(uid); return MA_SUCCESS; } @@ -17701,6 +17704,7 @@ ma_result ma_get_AudioObject_name(ma_context* pContext, AudioObjectID objectID, return MA_ERROR; } + ((ma_CFRelease_proc)pContext->coreaudio.CFRelease)(deviceName); return MA_SUCCESS; } @@ -18126,6 +18130,7 @@ ma_result ma_find_AudioObjectID(ma_context* pContext, ma_device_type deviceType, if (ma_does_AudioObject_support_playback(pContext, deviceObjectID)) { if (strcmp(uid, pDeviceID->coreaudio) == 0) { *pDeviceObjectID = deviceObjectID; + ma_free(pDeviceObjectIDs); return MA_SUCCESS; } } @@ -18133,11 +18138,14 @@ ma_result ma_find_AudioObjectID(ma_context* pContext, ma_device_type deviceType, if (ma_does_AudioObject_support_capture(pContext, deviceObjectID)) { if (strcmp(uid, pDeviceID->coreaudio) == 0) { *pDeviceObjectID = deviceObjectID; + ma_free(pDeviceObjectIDs); return MA_SUCCESS; } } } } + + ma_free(pDeviceObjectIDs); } /* If we get here it means we couldn't find the device. */ @@ -18218,6 +18226,7 @@ ma_result ma_find_best_format__coreaudio(ma_context* pContext, AudioObjectID dev } if (!hasSupportedFormat) { + ma_free(pDeviceFormatDescriptions); return MA_FORMAT_NOT_SUPPORTED; } @@ -18339,6 +18348,8 @@ ma_result ma_find_best_format__coreaudio(ma_context* pContext, AudioObjectID dev } *pFormat = bestDeviceFormatSoFar; + + ma_free(pDeviceFormatDescriptions); return MA_SUCCESS; } #endif @@ -19678,6 +19689,7 @@ ma_result ma_context_init__coreaudio(const ma_context_config* pConfig, ma_contex } pContext->coreaudio.CFStringGetCString = ma_dlsym(pContext, pContext->coreaudio.hCoreFoundation, "CFStringGetCString"); + pContext->coreaudio.CFRelease = ma_dlsym(pContext, pContext->coreaudio.hCoreFoundation, "CFRelease"); pContext->coreaudio.hCoreAudio = ma_dlopen(pContext, "CoreAudio.framework/CoreAudio"); @@ -19728,6 +19740,7 @@ ma_result ma_context_init__coreaudio(const ma_context_config* pConfig, ma_contex pContext->coreaudio.AudioUnitRender = ma_dlsym(pContext, pContext->coreaudio.hAudioUnit, "AudioUnitRender"); #else pContext->coreaudio.CFStringGetCString = (ma_proc)CFStringGetCString; + pContext->coreaudio.CFRelease = (ma_proc)CFRelease; #if defined(MA_APPLE_DESKTOP) pContext->coreaudio.AudioObjectGetPropertyData = (ma_proc)AudioObjectGetPropertyData;