Commit f970144a authored by znakeeye's avatar znakeeye Committed by David Reid

Fix for NDK issue 360. dlclose() skipped pre-API 28. This fixes weird crashes during uninit.

parent afc7e17f
......@@ -38467,6 +38467,18 @@ static ma_result ma_device_get_info__aaudio(ma_device* pDevice, ma_device_type t
return MA_SUCCESS;
}
static void ma_close_library__aaudio(ma_context* pContext)
{
MA_ASSERT(pContext != NULL);
/* Hack for Android bug (see https://github.com/android/ndk/issues/360). Calling dlclose() pre-API 28 may segfault. */
if (ma_android_sdk_version() >= 28) {
ma_dlclose(ma_context_get_log(pContext), pContext->aaudio.hAAudio);
}
pContext->aaudio.hAAudio = NULL;
}
static ma_result ma_context_uninit__aaudio(ma_context* pContext)
{
......@@ -38474,9 +38486,7 @@ static ma_result ma_context_uninit__aaudio(ma_context* pContext)
MA_ASSERT(pContext->backend == ma_backend_aaudio);
ma_device_job_thread_uninit(&pContext->aaudio.jobThread, &pContext->allocationCallbacks);
ma_dlclose(ma_context_get_log(pContext), pContext->aaudio.hAAudio);
pContext->aaudio.hAAudio = NULL;
ma_close_library__aaudio(pContext);
return MA_SUCCESS;
}
......@@ -38584,8 +38594,7 @@ static ma_result ma_context_init__aaudio(ma_context* pContext, const ma_context_
result = ma_device_job_thread_init(&jobThreadConfig, &pContext->allocationCallbacks, &pContext->aaudio.jobThread);
if (result != MA_SUCCESS) {
ma_dlclose(ma_context_get_log(pContext), pContext->aaudio.hAAudio);
pContext->aaudio.hAAudio = NULL;
ma_close_library__aaudio(pContext);
return result;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment