From 484fdcf7e446aaab859eba1b9ae79d689241592a Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Thu, 10 Jul 2008 14:32:58 -0700 Subject: [PATCH] quartz: End the flush downstream first before restarting playback in pullpin. --- dlls/quartz/pin.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dlls/quartz/pin.c b/dlls/quartz/pin.c index bb562adf419..e45db968061 100644 --- a/dlls/quartz/pin.c +++ b/dlls/quartz/pin.c @@ -1783,6 +1783,11 @@ HRESULT WINAPI PullPin_EndFlush(IPin * iface) TRACE("(%p)->()\n", iface); + /* Send further first: Else a race condition might terminate processing early */ + EnterCriticalSection(This->pin.pCritSec); + SendFurther( iface, deliver_endflush, NULL, NULL ); + LeaveCriticalSection(This->pin.pCritSec); + EnterCriticalSection(&This->thread_lock); { FILTER_STATE state; @@ -1795,10 +1800,6 @@ HRESULT WINAPI PullPin_EndFlush(IPin * iface) } LeaveCriticalSection(&This->thread_lock); - EnterCriticalSection(This->pin.pCritSec); - SendFurther( iface, deliver_endflush, NULL, NULL ); - LeaveCriticalSection(This->pin.pCritSec); - return S_OK; }