From 992f5345edb52e89087ff444fe5023b4a5d3a896 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Fri, 18 Jul 2014 22:19:40 +0200 Subject: [PATCH] strmbase: Separate BaseFilter destructor from Release. --- dlls/strmbase/filter.c | 21 +++++++++++++-------- include/wine/strmbase.h | 1 + 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/dlls/strmbase/filter.c b/dlls/strmbase/filter.c index e2cf807ea6c..697b2439e98 100644 --- a/dlls/strmbase/filter.c +++ b/dlls/strmbase/filter.c @@ -69,14 +69,7 @@ ULONG WINAPI BaseFilterImpl_Release(IBaseFilter * iface) TRACE("(%p)->() Release from %d\n", This, refCount + 1); if (!refCount) - { - if (This->pClock) - IReferenceClock_Release(This->pClock); - - This->IBaseFilter_iface.lpVtbl = NULL; - This->csFilter.DebugInfo->Spare[0] = 0; - DeleteCriticalSection(&This->csFilter); - } + BaseFilter_Destroy(This); return refCount; } @@ -218,3 +211,15 @@ HRESULT WINAPI BaseFilter_Init(BaseFilter * This, const IBaseFilterVtbl *Vtbl, c return S_OK; } + +HRESULT WINAPI BaseFilter_Destroy(BaseFilter * This) +{ + if (This->pClock) + IReferenceClock_Release(This->pClock); + + This->IBaseFilter_iface.lpVtbl = NULL; + This->csFilter.DebugInfo->Spare[0] = 0; + DeleteCriticalSection(&This->csFilter); + + return S_OK; +} diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h index 9727fb419e2..1370198d386 100644 --- a/include/wine/strmbase.h +++ b/include/wine/strmbase.h @@ -194,6 +194,7 @@ LONG WINAPI BaseFilterImpl_GetPinVersion(BaseFilter* This); VOID WINAPI BaseFilterImpl_IncrementPinVersion(BaseFilter* This); HRESULT WINAPI BaseFilter_Init(BaseFilter * This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable* pBaseFuncsTable); +HRESULT WINAPI BaseFilter_Destroy(BaseFilter * This); /* Enums */ HRESULT WINAPI EnumMediaTypes_Construct(BasePin *iface, BasePin_GetMediaType enumFunc, BasePin_GetMediaTypeVersion versionFunc, IEnumMediaTypes ** ppEnum); -- 2.11.4.GIT