Zebediah Figura : quartz/dsoundrender: Avoid taking the filter lock in IPin::EndOfStream().
Alexandre Julliard
julliard at winehq.org
Thu Nov 28 16:02:20 CST 2019
Module: wine
Branch: master
Commit: 09b39646b05b856727faabdeabbae514da628074
URL: https://source.winehq.org/git/wine.git/?a=commit;h=09b39646b05b856727faabdeabbae514da628074
Author: Zebediah Figura <z.figura12 at 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 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
}
More information about the wine-cvs
mailing list