summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Yong <10walls@gmail.com>2014-10-26 00:08:58 +0800
committerKevin Mitchell <kevmitch@gmail.com>2014-11-18 02:12:28 -0800
commit7697d300d2c0c911611d44f53290323e58519527 (patch)
treee44a4dc8972f5c05f9e15ddffdbd9f1530fbf24d
parent22bf0a78df83424fd6de3b7f46a9af258ec8e424 (diff)
downloadmpv-7697d300d2c0c911611d44f53290323e58519527.tar.bz2
mpv-7697d300d2c0c911611d44f53290323e58519527.tar.xz
ao/wasapi: fix leaked marshaled interface streams
Signed-off-by: Kevin Mitchell <kevmitch@gmail.com>
-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));