From d1d265b74d770b2e5e6795957cb353f94fe0a99e Mon Sep 17 00:00:00 2001 From: David Reid Date: Mon, 14 Nov 2016 19:44:48 +1000 Subject: [PATCH] API CHANGE: Change parameters of mal_device_init(). These changes add a mal_context parameter and moves the output device to the last parameter for consistency with mal_context_init(). --- mini_al.h | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/mini_al.h b/mini_al.h index f32d0cc6..d1e19e44 100644 --- a/mini_al.h +++ b/mini_al.h @@ -561,7 +561,7 @@ mal_result mal_enumerate_devices(mal_context* pContext, mal_device_type type, ma // Efficiency: LOW // This API will dynamically link to backend DLLs/SOs like dsound.dll, and is otherwise just slow // due to the nature of it being an initialization API. -mal_result mal_device_init(mal_device* pDevice, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig, void* pUserData); +mal_result mal_device_init(mal_context* pContext, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig, void* pUserData, mal_device* pDevice); // Uninitializes a device. // @@ -1470,8 +1470,9 @@ static void mal_device_uninit__null(mal_device* pDevice) mal_free(pDevice->null_device.pBuffer); } -static mal_result mal_device_init__null(mal_device* pDevice, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig) +static mal_result mal_device_init__null(mal_context* pContext, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig, mal_device* pDevice) { + (void)pContext; (void)type; (void)pDeviceID; @@ -1812,8 +1813,10 @@ static void mal_device_uninit__wasapi(mal_device* pDevice) } } -static mal_result mal_device_init__wasapi(mal_device* pDevice, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig) +static mal_result mal_device_init__wasapi(mal_context* pContext, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig, mal_device* pDevice) { + (void)pContext; + mal_assert(pDevice != NULL); pDevice->api = mal_backend_wasapi; mal_zero_object(&pDevice->wasapi); @@ -2251,8 +2254,10 @@ static void mal_device_uninit__dsound(mal_device* pDevice) } } -static mal_result mal_device_init__dsound(mal_device* pDevice, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig) +static mal_result mal_device_init__dsound(mal_context* pContext, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig, mal_device* pDevice) { + (void)pContext; + mal_assert(pDevice != NULL); pDevice->api = mal_backend_dsound; mal_zero_object(&pDevice->dsound); @@ -3151,8 +3156,10 @@ static void mal_device_uninit__alsa(mal_device* pDevice) } } -static mal_result mal_device_init__alsa(mal_device* pDevice, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig) +static mal_result mal_device_init__alsa(mal_context* pContext, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig, mal_device* pDevice) { + (void)pContext; + mal_assert(pDevice != NULL); pDevice->api = mal_backend_alsa; mal_zero_object(&pDevice->alsa); @@ -3641,8 +3648,10 @@ static void mal_device_uninit__sles(mal_device* pDevice) } } -static mal_result mal_device_init__sles(mal_device* pDevice, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig) +static mal_result mal_device_init__sles(mal_context* pContext, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig, mal_device* pDevice) { + (void)pContext; + // For now, only supporting Android implementations of OpenSL|ES since that's the only one I've // been able to test with and I currently depend on Android-specific extensions (simple buffer // queues). @@ -4257,10 +4266,11 @@ mal_result mal_enumerate_devices(mal_context* pContext, mal_device_type type, ma return result; } -mal_result mal_device_init(mal_device* pDevice, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig, void* pUserData) +mal_result mal_device_init(mal_context* pContext, mal_device_type type, mal_device_id* pDeviceID, mal_device_config* pConfig, void* pUserData, mal_device* pDevice) { if (pDevice == NULL) return mal_post_error(pDevice, "mal_device_init() called with invalid arguments.", MAL_INVALID_ARGS); mal_zero_object(pDevice); + pDevice->pContext = pContext; // Set the user data and log callback ASAP to ensure it is available for the entire initialization process. pDevice->pUserData = pUserData; @@ -4323,27 +4333,27 @@ mal_result mal_device_init(mal_device* pDevice, mal_device_type type, mal_device mal_result result = MAL_NO_BACKEND; #ifdef MAL_ENABLE_WASAPI if (result != MAL_SUCCESS) { - result = mal_device_init__wasapi(pDevice, type, pDeviceID, pConfig); + result = mal_device_init__wasapi(pContext, type, pDeviceID, pConfig, pDevice); } #endif #ifdef MAL_ENABLE_DSOUND if (result != MAL_SUCCESS) { - result = mal_device_init__dsound(pDevice, type, pDeviceID, pConfig); + result = mal_device_init__dsound(pContext, type, pDeviceID, pConfig, pDevice); } #endif #ifdef MAL_ENABLE_ALSA if (result != MAL_SUCCESS) { - result = mal_device_init__alsa(pDevice, type, pDeviceID, pConfig); + result = mal_device_init__alsa(pContext, type, pDeviceID, pConfig, pDevice); } #endif #ifdef MAL_ENABLE_OPENSLES if (result != MAL_SUCCESS) { - result = mal_device_init__sles(pDevice, type, pDeviceID, pConfig); + result = mal_device_init__sles(pContext, type, pDeviceID, pConfig, pDevice); } #endif #ifdef MAL_ENABLE_NULL if (result != MAL_SUCCESS) { - result = mal_device_init__null(pDevice, type, pDeviceID, pConfig); + result = mal_device_init__null(pContext, type, pDeviceID, pConfig, pDevice); } #endif @@ -4353,7 +4363,7 @@ mal_result mal_device_init(mal_device* pDevice, mal_device_type type, mal_device // Some backends don't require the worker thread. - if (pDevice->api != mal_backend_sles) { + if (pContext->backend != mal_backend_sles) { // The worker thread. if (!mal_thread_create(&pDevice->thread, mal_worker_thread, pDevice)) { mal_device_uninit(pDevice);