[PATCH 4/5] strmbase: Get rid of BaseRendererImpl_EndOfStream().

Zebediah Figura z.figura12 at gmail.com
Wed Nov 27 19:27:17 CST 2019


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/quartz/dsoundrender.c | 15 +----------
 dlls/strmbase/renderer.c   | 52 +++++++++++++++-----------------------
 include/wine/strmbase.h    |  1 -
 3 files changed, 21 insertions(+), 47 deletions(-)

diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c
index 3979853b8b..b6757fa76a 100644
--- a/dlls/quartz/dsoundrender.c
+++ b/dlls/quartz/dsoundrender.c
@@ -500,20 +500,7 @@ static HRESULT WINAPI DSoundRender_BreakConnect(struct strmbase_renderer *iface)
 static HRESULT WINAPI DSoundRender_EndOfStream(struct strmbase_renderer *iface)
 {
     DSoundRenderImpl *This = impl_from_strmbase_renderer(iface);
-    HRESULT hr;
-
-    TRACE("(%p)->()\n",iface);
-
-    hr = BaseRendererImpl_EndOfStream(iface);
-    if (hr != S_OK)
-    {
-        ERR("%08x\n", hr);
-        return hr;
-    }
-
-    hr = DSoundRender_HandleEndOfStream(This);
-
-    return hr;
+    return DSoundRender_HandleEndOfStream(This);
 }
 
 static HRESULT WINAPI DSoundRender_EndFlush(struct strmbase_renderer *iface)
diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c
index 5aee4380f2..50bd33715d 100644
--- a/dlls/strmbase/renderer.c
+++ b/dlls/strmbase/renderer.c
@@ -82,18 +82,29 @@ static HRESULT WINAPI BaseRenderer_InputPin_Disconnect(IPin * iface)
 
 static HRESULT WINAPI BaseRenderer_InputPin_EndOfStream(IPin * iface)
 {
-    struct strmbase_renderer *pFilter = impl_from_IPin(iface);
-    HRESULT hr;
+    struct strmbase_renderer *filter = impl_from_IPin(iface);
+    IFilterGraph *graph = filter->filter.filterInfo.pGraph;
+    IMediaEventSink *event_sink;
+    HRESULT hr = S_OK;
 
     TRACE("iface %p.\n", iface);
 
-    EnterCriticalSection(&pFilter->csRenderLock);
-    pFilter->eos = TRUE;
-    if (pFilter->pFuncsTable->pfnEndOfStream)
-        hr = pFilter->pFuncsTable->pfnEndOfStream(pFilter);
-    else
-        hr = BaseRendererImpl_EndOfStream(pFilter);
-    LeaveCriticalSection(&pFilter->csRenderLock);
+    EnterCriticalSection(&filter->csRenderLock);
+    filter->eos = TRUE;
+
+    if (graph && SUCCEEDED(IFilterGraph_QueryInterface(graph,
+            &IID_IMediaEventSink, (void **)&event_sink)))
+    {
+        IMediaEventSink_Notify(event_sink, EC_COMPLETE, S_OK,
+                (LONG_PTR)&filter->filter.IBaseFilter_iface);
+        IMediaEventSink_Release(event_sink);
+    }
+    RendererPosPassThru_EOS(filter->pPosition);
+    SetEvent(filter->state_event);
+
+    if (filter->pFuncsTable->pfnEndOfStream)
+        hr = filter->pFuncsTable->pfnEndOfStream(filter);
+    LeaveCriticalSection(&filter->csRenderLock);
     return hr;
 }
 
@@ -458,29 +469,6 @@ static const IBaseFilterVtbl strmbase_renderer_vtbl =
     BaseFilterImpl_QueryVendorInfo
 };
 
-HRESULT WINAPI BaseRendererImpl_EndOfStream(struct strmbase_renderer *iface)
-{
-    IMediaEventSink* pEventSink;
-    IFilterGraph *graph;
-    HRESULT hr = S_OK;
-
-    TRACE("(%p)\n", iface);
-
-    graph = iface->filter.filterInfo.pGraph;
-    if (graph)
-    {        hr = IFilterGraph_QueryInterface(iface->filter.filterInfo.pGraph, &IID_IMediaEventSink, (LPVOID*)&pEventSink);
-        if (SUCCEEDED(hr))
-        {
-            hr = IMediaEventSink_Notify(pEventSink, EC_COMPLETE, S_OK, (LONG_PTR)iface);
-            IMediaEventSink_Release(pEventSink);
-        }
-    }
-    RendererPosPassThru_EOS(iface->pPosition);
-    SetEvent(iface->state_event);
-
-    return hr;
-}
-
 HRESULT WINAPI BaseRendererImpl_ClearPendingSample(struct strmbase_renderer *iface)
 {
     if (iface->pMediaSample)
diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h
index 1dbc9ea4d8..b08303f93d 100644
--- a/include/wine/strmbase.h
+++ b/include/wine/strmbase.h
@@ -568,7 +568,6 @@ struct strmbase_renderer_ops
 };
 
 HRESULT WINAPI BaseRendererImpl_ClearPendingSample(struct strmbase_renderer *filter);
-HRESULT WINAPI BaseRendererImpl_EndOfStream(struct strmbase_renderer *filter);
 HRESULT WINAPI BaseRendererImpl_Receive(struct strmbase_renderer *filter, IMediaSample *sample);
 
 HRESULT WINAPI strmbase_renderer_init(struct strmbase_renderer *filter, IUnknown *outer,
-- 
2.24.0




More information about the wine-devel mailing list