diff options
Diffstat (limited to 'audio')
-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)); |