mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-24 01:04:02 +02:00
Core Audio: Set up infrastructure for runtime linking.
This commit is contained in:
@@ -1234,7 +1234,9 @@ struct mal_context
|
|||||||
#ifdef MAL_SUPPORT_COREAUDIO
|
#ifdef MAL_SUPPORT_COREAUDIO
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
int _unused;
|
mal_handle hCoreFoundation;
|
||||||
|
mal_handle hCoreAudio;
|
||||||
|
mal_handle hAudioToolbox;
|
||||||
} coreaudio;
|
} coreaudio;
|
||||||
#endif
|
#endif
|
||||||
#ifdef MAL_SUPPORT_OSS
|
#ifdef MAL_SUPPORT_OSS
|
||||||
@@ -12500,7 +12502,7 @@ mal_result mal_device__stop_backend__jack(mal_device* pDevice)
|
|||||||
|
|
||||||
return MAL_SUCCESS;
|
return MAL_SUCCESS;
|
||||||
}
|
}
|
||||||
#endif // Jack
|
#endif // JACK
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -12512,7 +12514,6 @@ mal_result mal_device__stop_backend__jack(mal_device* pDevice)
|
|||||||
#ifdef MAL_HAS_COREAUDIO
|
#ifdef MAL_HAS_COREAUDIO
|
||||||
#include <CoreAudio/CoreAudio.h>
|
#include <CoreAudio/CoreAudio.h>
|
||||||
#include <AudioToolbox/AudioToolbox.h>
|
#include <AudioToolbox/AudioToolbox.h>
|
||||||
//#include <AudioUnit/AudioUnit.h>
|
|
||||||
|
|
||||||
#include <TargetConditionals.h>
|
#include <TargetConditionals.h>
|
||||||
#if defined(TARGET_OS_OSX)
|
#if defined(TARGET_OS_OSX)
|
||||||
@@ -13453,6 +13454,26 @@ mal_result mal_context_init__coreaudio(mal_context* pContext)
|
|||||||
{
|
{
|
||||||
mal_assert(pContext != NULL);
|
mal_assert(pContext != NULL);
|
||||||
|
|
||||||
|
#ifndef MAL_NO_RUNTIME_LINKING
|
||||||
|
pContext->coreaudio.hCoreFoundation = mal_dlopen("CoreFoundation.framework/CoreFoundation");
|
||||||
|
if (pContext->coreaudio.hCoreFoundation == NULL) {
|
||||||
|
return MAL_API_NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
pContext->coreaudio.hCoreAudio = mal_dlopen("CoreAudio.framework/CoreAudio");
|
||||||
|
if (pContext->coreaudio.hCoreAudio == NULL) {
|
||||||
|
mal_dlclose(pContext->coreaudio.hCoreFoundation);
|
||||||
|
return MAL_API_NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
|
pContext->coreaudio.hAudioToolbox = mal_dlopen("AudioToolbox.framework/AudioToolbox");
|
||||||
|
if (pContext->coreaudio.hAudioToolbox == NULL) {
|
||||||
|
mal_dlclose(pContext->coreaudio.hCoreAudio);
|
||||||
|
mal_dlclose(pContext->coreaudio.hCoreFoundation);
|
||||||
|
return MAL_API_NOT_FOUND;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
pContext->onDeviceIDEqual = mal_context_is_device_id_equal__coreaudio;
|
pContext->onDeviceIDEqual = mal_context_is_device_id_equal__coreaudio;
|
||||||
pContext->onEnumDevices = mal_context_enumerate_devices__coreaudio;
|
pContext->onEnumDevices = mal_context_enumerate_devices__coreaudio;
|
||||||
pContext->onGetDeviceInfo = mal_context_get_device_info__coreaudio;
|
pContext->onGetDeviceInfo = mal_context_get_device_info__coreaudio;
|
||||||
@@ -13465,6 +13486,12 @@ mal_result mal_context_uninit__coreaudio(mal_context* pContext)
|
|||||||
mal_assert(pContext != NULL);
|
mal_assert(pContext != NULL);
|
||||||
mal_assert(pContext->backend == mal_backend_coreaudio);
|
mal_assert(pContext->backend == mal_backend_coreaudio);
|
||||||
|
|
||||||
|
#ifndef MAL_NO_RUNTIME_LINKING
|
||||||
|
mal_dlclose(pContext->coreaudio.hAudioToolbox);
|
||||||
|
mal_dlclose(pContext->coreaudio.hCoreAudio);
|
||||||
|
mal_dlclose(pContext->coreaudio.hCoreFoundation);
|
||||||
|
#endif
|
||||||
|
|
||||||
(void)pContext;
|
(void)pContext;
|
||||||
return MAL_SUCCESS;
|
return MAL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user