Maarten Lankhorst : quartz: Fix video renderer EndOfStream.

Alexandre Julliard julliard at winehq.org
Wed Nov 10 11:09:37 CST 2010


Module: wine
Branch: master
Commit: a5798fc96caa6610ffcceaae3584ea5b67b758ad
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a5798fc96caa6610ffcceaae3584ea5b67b758ad

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Tue Nov  9 23:42:41 2010 +0100

quartz: Fix video renderer EndOfStream.

---

 dlls/quartz/videorenderer.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c
index 9645d83..2ad75c4 100644
--- a/dlls/quartz/videorenderer.c
+++ b/dlls/quartz/videorenderer.c
@@ -939,11 +939,14 @@ static HRESULT WINAPI VideoRenderer_InputPin_EndOfStream(IPin * iface)
     BaseInputPin* This = (BaseInputPin*)iface;
     VideoRendererImpl *pFilter;
     IMediaEventSink* pEventSink;
-    HRESULT hr;
+    HRESULT hr = S_OK;
 
     TRACE("(%p/%p)->()\n", This, iface);
 
+    EnterCriticalSection(This->pin.pCritSec);
     pFilter = (VideoRendererImpl*)This->pin.pinInfo.pFilter;
+    if (This->flushing || This->end_of_stream)
+        goto out;
     hr = IFilterGraph_QueryInterface(pFilter->filter.filterInfo.pGraph, &IID_IMediaEventSink, (LPVOID*)&pEventSink);
     if (SUCCEEDED(hr))
     {
@@ -951,6 +954,9 @@ static HRESULT WINAPI VideoRenderer_InputPin_EndOfStream(IPin * iface)
         IMediaEventSink_Release(pEventSink);
     }
     MediaSeekingPassThru_EOS(pFilter->seekthru_unk);
+    This->end_of_stream = 1;
+out:
+    LeaveCriticalSection(This->pin.pCritSec);
 
     return hr;
 }




More information about the wine-cvs mailing list