diff --git a/miniaudio.h b/miniaudio.h index a3528489..fdb4adf6 100644 --- a/miniaudio.h +++ b/miniaudio.h @@ -38758,10 +38758,13 @@ static ma_result ma_context_uninit__webaudio(ma_context* pContext) (void)pContext; /* Unused. */ - /* Remove the global miniaudio object from window. */ + /* Remove the global miniaudio object from window if there are no more references to it. */ EM_ASM({ if (typeof(window.miniaudio) !== 'undefined') { - delete window.miniaudio; + window.miniaudio.referenceCount--; + if (window.miniaudio.referenceCount === 0) { + delete window.miniaudio; + } } }); @@ -38783,7 +38786,9 @@ static ma_result ma_context_init__webaudio(ma_context* pContext, const ma_contex } if (typeof(window.miniaudio) === 'undefined') { - window.miniaudio = {}; + window.miniaudio = { + referenceCount: 0 + }; miniaudio.devices = []; /* Device cache for mapping devices to indexes for JavaScript/C interop. */ miniaudio.track_device = function(device) { @@ -38847,6 +38852,8 @@ static ma_result ma_context_init__webaudio(ma_context* pContext, const ma_contex }); } + window.miniaudio.referenceCount++; + return 1; }, 0); /* Must pass in a dummy argument for C99 compatibility. */