From 7697d300d2c0c911611d44f53290323e58519527 Mon Sep 17 00:00:00 2001 From: Jonathan Yong <10walls@gmail.com> Date: Sun, 26 Oct 2014 00:08:58 +0800 Subject: ao/wasapi: fix leaked marshaled interface streams Signed-off-by: Kevin Mitchell --- audio/out/ao_wasapi_utils.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'audio') 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)); -- cgit v1.2.3