diff options
author | Jonathan Yong <10walls@gmail.com> | 2014-10-26 00:08:58 +0800 |
---|---|---|
committer | Kevin Mitchell <kevmitch@gmail.com> | 2014-11-18 02:12:28 -0800 |
commit | 7697d300d2c0c911611d44f53290323e58519527 (patch) | |
tree | e44a4dc8972f5c05f9e15ddffdbd9f1530fbf24d /audio/out | |
parent | 22bf0a78df83424fd6de3b7f46a9af258ec8e424 (diff) | |
download | mpv-7697d300d2c0c911611d44f53290323e58519527.tar.bz2 mpv-7697d300d2c0c911611d44f53290323e58519527.tar.xz |
ao/wasapi: fix leaked marshaled interface streams
Signed-off-by: Kevin Mitchell <kevmitch@gmail.com>
Diffstat (limited to 'audio/out')
-rwxr-xr-x | audio/out/ao_wasapi_utils.c | 9 |
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)); |