Module: wine Branch: master Commit: 6bd3b156aca74ab50e98a097c723e583c458ef43 URL: http://source.winehq.org/git/wine.git/?a=commit;h=6bd3b156aca74ab50e98a097c7...
Author: Chris Robinson chris.kcat@gmail.com Date: Mon Mar 19 13:26:09 2007 -0700
quartz: Don't delete critical sections before the filter's pins are done using them.
---
dlls/quartz/dsoundrender.c | 5 +++-- dlls/quartz/parser.c | 5 +++-- dlls/quartz/transform.c | 6 +++--- dlls/quartz/videorenderer.c | 6 +++--- 4 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c index b5fa40b..5e84e21 100644 --- a/dlls/quartz/dsoundrender.c +++ b/dlls/quartz/dsoundrender.c @@ -400,8 +400,6 @@ static ULONG WINAPI DSoundRender_Release(IBaseFilter * iface) { IPin *pConnectedTo;
- This->csFilter.DebugInfo->Spare[0] = 0; - DeleteCriticalSection(&This->csFilter); if (This->pClock) IReferenceClock_Release(This->pClock);
@@ -425,6 +423,9 @@ static ULONG WINAPI DSoundRender_Release(IBaseFilter * iface) This->lpVtbl = NULL; This->IBasicAudio_vtbl = NULL;
+ This->csFilter.DebugInfo->Spare[0] = 0; + DeleteCriticalSection(&This->csFilter); + TRACE("Destroying Audio Renderer\n"); CoTaskMemFree(This);
diff --git a/dlls/quartz/parser.c b/dlls/quartz/parser.c index fb8c085..15e01e8 100644 --- a/dlls/quartz/parser.c +++ b/dlls/quartz/parser.c @@ -187,8 +187,6 @@ static ULONG WINAPI Parser_Release(IBaseFilter * iface) { ULONG i;
- This->csFilter.DebugInfo->Spare[0] = 0; - DeleteCriticalSection(&This->csFilter); if (This->pClock) IReferenceClock_Release(This->pClock);
@@ -208,6 +206,9 @@ static ULONG WINAPI Parser_Release(IBaseFilter * iface)
CoTaskMemFree(This->ppPins); This->lpVtbl = NULL; + + This->csFilter.DebugInfo->Spare[0] = 0; + DeleteCriticalSection(&This->csFilter);
TRACE("Destroying parser\n"); CoTaskMemFree(This); diff --git a/dlls/quartz/transform.c b/dlls/quartz/transform.c index 04366ef..8343afb 100644 --- a/dlls/quartz/transform.c +++ b/dlls/quartz/transform.c @@ -276,9 +276,6 @@ static ULONG WINAPI TransformFilter_Release(IBaseFilter * iface) { ULONG i;
- This->csFilter.DebugInfo->Spare[0] = 0; - DeleteCriticalSection(&This->csFilter); - if (This->pClock) IReferenceClock_Release(This->pClock);
@@ -301,6 +298,9 @@ static ULONG WINAPI TransformFilter_Release(IBaseFilter * iface)
This->pFuncsTable->pfnCleanup(This);
+ This->csFilter.DebugInfo->Spare[0] = 0; + DeleteCriticalSection(&This->csFilter); + TRACE("Destroying transform filter\n"); CoTaskMemFree(This);
diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c index ccfa61a..a7df440 100644 --- a/dlls/quartz/videorenderer.c +++ b/dlls/quartz/videorenderer.c @@ -524,9 +524,6 @@ static ULONG WINAPI VideoRenderer_Release(IBaseFilter * iface) { IPin *pConnectedTo;
- This->csFilter.DebugInfo->Spare[0] = 0; - DeleteCriticalSection(&This->csFilter); - DestroyWindow(This->hWnd); PostThreadMessageA(This->ThreadID, WM_QUIT, 0, 0); WaitForSingleObject(This->hThread, INFINITE); @@ -547,6 +544,9 @@ static ULONG WINAPI VideoRenderer_Release(IBaseFilter * iface) CoTaskMemFree(This->ppPins); This->lpVtbl = NULL;
+ This->csFilter.DebugInfo->Spare[0] = 0; + DeleteCriticalSection(&This->csFilter); + TRACE("Destroying Video Renderer\n"); CoTaskMemFree(This);