Erich E. Hoover : strmbase: Fix race condition on InputPin_EndFlush between csRenderLock and filter.csFilter.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Aug 5 18:03:07 CDT 2014


Module: wine
Branch: master
Commit: 47425a5801e7972e5e78e3561db0c37f02008e6a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=47425a5801e7972e5e78e3561db0c37f02008e6a

Author: Erich E. Hoover <erich.e.hoover at gmail.com>
Date:   Thu Jul 17 10:35:43 2014 -0600

strmbase: Fix race condition on InputPin_EndFlush between csRenderLock and filter.csFilter.

---

 dlls/strmbase/renderer.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c
index 3acca0f..9b9c225 100644
--- a/dlls/strmbase/renderer.c
+++ b/dlls/strmbase/renderer.c
@@ -155,8 +155,8 @@ static HRESULT WINAPI BaseRenderer_InputPin_EndFlush(IPin * iface)
 
     TRACE("(%p/%p)->()\n", This, pFilter);
 
-    EnterCriticalSection(&pFilter->filter.csFilter);
     EnterCriticalSection(&pFilter->csRenderLock);
+    EnterCriticalSection(&pFilter->filter.csFilter);
     EnterCriticalSection(This->pin.pCritSec);
     hr = BaseInputPinImpl_EndFlush(iface);
     if (SUCCEEDED(hr))
@@ -167,8 +167,8 @@ static HRESULT WINAPI BaseRenderer_InputPin_EndFlush(IPin * iface)
             hr = BaseRendererImpl_EndFlush(pFilter);
     }
     LeaveCriticalSection(This->pin.pCritSec);
-    LeaveCriticalSection(&pFilter->csRenderLock);
     LeaveCriticalSection(&pFilter->filter.csFilter);
+    LeaveCriticalSection(&pFilter->csRenderLock);
     return hr;
 }
 




More information about the wine-cvs mailing list