[PATCH 04/14] quartz: Fix video renderer EndOfStream
Maarten Lankhorst
m.b.lankhorst at gmail.com
Tue Nov 9 16:42:41 CST 2010
---
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;
}
--
1.7.1
More information about the wine-patches
mailing list