Module: wine Branch: master Commit: 09b39646b05b856727faabdeabbae514da628074 URL: https://source.winehq.org/git/wine.git/?a=commit;h=09b39646b05b856727faabdea...
Author: Zebediah Figura z.figura12@gmail.com Date: Wed Nov 27 19:27:14 2019 -0600
quartz/dsoundrender: Avoid taking the filter lock in IPin::EndOfStream().
IPin::EndOfStream() is called from a streaming thread. The streaming thread should never take the filter lock.
Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/quartz/dsoundrender.c | 2 -- dlls/strmbase/renderer.c | 2 -- 2 files changed, 4 deletions(-)
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c index fca1a710de..71851f6b4a 100644 --- a/dlls/quartz/dsoundrender.c +++ b/dlls/quartz/dsoundrender.c @@ -236,11 +236,9 @@ static HRESULT DSoundRender_HandleEndOfStream(DSoundRenderImpl *This) break;
This->in_loop = 1; - LeaveCriticalSection(&This->renderer.filter.csFilter); LeaveCriticalSection(&This->renderer.csRenderLock); WaitForSingleObject(This->renderer.flush_event, 10); EnterCriticalSection(&This->renderer.csRenderLock); - EnterCriticalSection(&This->renderer.filter.csFilter); This->in_loop = 0; }
diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index dbb677e9ad..98d27cc83a 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -88,13 +88,11 @@ static HRESULT WINAPI BaseRenderer_InputPin_EndOfStream(IPin * iface) TRACE("iface %p.\n", iface);
EnterCriticalSection(&pFilter->csRenderLock); - EnterCriticalSection(&pFilter->filter.csFilter); pFilter->eos = TRUE; if (pFilter->pFuncsTable->pfnEndOfStream) hr = pFilter->pFuncsTable->pfnEndOfStream(pFilter); else hr = BaseRendererImpl_EndOfStream(pFilter); - LeaveCriticalSection(&pFilter->filter.csFilter); LeaveCriticalSection(&pFilter->csRenderLock); return hr; }