Module: wine Branch: master Commit: 02c859e43530b06c644588c60097a4ebc4dd87af URL: https://source.winehq.org/git/wine.git/?a=commit;h=02c859e43530b06c644588c60...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed Jan 27 17:37:46 2021 +0300
mf/sar: Release pending items when audio client is released.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mf/sar.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/dlls/mf/sar.c b/dlls/mf/sar.c index e318576e80e..d839cba90f1 100644 --- a/dlls/mf/sar.c +++ b/dlls/mf/sar.c @@ -228,7 +228,13 @@ static ULONG WINAPI audio_renderer_sink_AddRef(IMFMediaSink *iface)
static void audio_renderer_release_audio_client(struct audio_renderer *renderer) { + struct queued_object *obj, *obj2; + MFCancelWorkItem(renderer->buffer_ready_key); + LIST_FOR_EACH_ENTRY_SAFE(obj, obj2, &renderer->queue, struct queued_object, entry) + { + release_pending_object(obj); + } renderer->buffer_ready_key = 0; if (renderer->audio_client) { @@ -253,7 +259,6 @@ static ULONG WINAPI audio_renderer_sink_Release(IMFMediaSink *iface) { struct audio_renderer *renderer = impl_from_IMFMediaSink(iface); ULONG refcount = InterlockedDecrement(&renderer->refcount); - struct queued_object *obj, *obj2;
TRACE("%p, refcount %u.\n", iface, refcount);
@@ -273,10 +278,6 @@ static ULONG WINAPI audio_renderer_sink_Release(IMFMediaSink *iface) IMFMediaType_Release(renderer->current_media_type); audio_renderer_release_audio_client(renderer); CloseHandle(renderer->buffer_ready_event); - LIST_FOR_EACH_ENTRY_SAFE(obj, obj2, &renderer->queue, struct queued_object, entry) - { - release_pending_object(obj); - } DeleteCriticalSection(&renderer->cs); heap_free(renderer); }