Module: wine Branch: master Commit: 992f5345edb52e89087ff444fe5023b4a5d3a896 URL: http://source.winehq.org/git/wine.git/?a=commit;h=992f5345edb52e89087ff444fe...
Author: Thomas Faber thomas.faber@reactos.org Date: Fri Jul 18 22:19:40 2014 +0200
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 e2cf807..697b243 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 9727fb4..1370198 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);