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; }