Module: wine Branch: master Commit: 3000b6ea1a398ffddf842e49e35f4deaeb157e92 URL: https://source.winehq.org/git/wine.git/?a=commit;h=3000b6ea1a398ffddf842e49e...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed May 13 16:42:10 2020 +0300
mf/sar: Implement stream flushing.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mf/sar.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/dlls/mf/sar.c b/dlls/mf/sar.c index 59ee9c3dc4..0ea46dcb89 100644 --- a/dlls/mf/sar.c +++ b/dlls/mf/sar.c @@ -1396,9 +1396,30 @@ static HRESULT WINAPI audio_renderer_stream_PlaceMarker(IMFStreamSink *iface, MF
static HRESULT WINAPI audio_renderer_stream_Flush(IMFStreamSink *iface) { - FIXME("%p.\n", iface); + struct audio_renderer *renderer = impl_from_IMFStreamSink(iface); + struct queued_object *obj, *obj2; + HRESULT hr = S_OK;
- return E_NOTIMPL; + TRACE("%p.\n", iface); + + EnterCriticalSection(&renderer->cs); + if (renderer->flags & SAR_SHUT_DOWN) + hr = MF_E_STREAMSINK_REMOVED; + else + { + LIST_FOR_EACH_ENTRY_SAFE(obj, obj2, &renderer->queue, struct queued_object, entry) + { + if (obj->type == OBJECT_TYPE_MARKER) + { + IMFMediaEventQueue_QueueEventParamVar(renderer->stream_event_queue, MEStreamSinkMarker, + &GUID_NULL, S_OK, &obj->u.marker.context); + } + release_pending_object(obj); + } + } + LeaveCriticalSection(&renderer->cs); + + return hr; }
static const IMFStreamSinkVtbl audio_renderer_stream_vtbl =