summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xaudio/out/ao_wasapi_utils.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/audio/out/ao_wasapi_utils.c b/audio/out/ao_wasapi_utils.c
index c4ca6cc1e1..228e0e3ff3 100755
--- a/audio/out/ao_wasapi_utils.c
+++ b/audio/out/ao_wasapi_utils.c
@@ -931,6 +931,13 @@ exit_label:
return hr;
}
+static void destroy_proxies(struct wasapi_state *state) {
+ SAFE_RELEASE(state->sAudioClient, IUnknown_Release(state->sAudioClient));
+ SAFE_RELEASE(state->sAudioVolume, IUnknown_Release(state->sAudioVolume));
+ SAFE_RELEASE(state->sEndpointVolume, IUnknown_Release(state->sEndpointVolume));
+ SAFE_RELEASE(state->sSessionControl, IUnknown_Release(state->sSessionControl));
+}
+
void wasapi_dispatch(void)
{
/* dispatch any possible pending messages */
@@ -1045,6 +1052,8 @@ void wasapi_thread_uninit(struct ao *ao)
IAudioEndpointVolume_SetMasterVolumeLevelScalar(state->pEndpointVolume,
state->initial_volume, NULL);
+ destroy_proxies(state);
+
SAFE_RELEASE(state->pRenderClient, IAudioRenderClient_Release(state->pRenderClient));
SAFE_RELEASE(state->pAudioClock, IAudioClock_Release(state->pAudioClock));
SAFE_RELEASE(state->pAudioVolume, ISimpleAudioVolume_Release(state->pAudioVolume));