From 3dbcadc2785236c2518777d592d17853ea260f0b Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Fri, 18 Jul 2014 22:23:36 +0200 Subject: [PATCH] strmbase: Destroy base class after child class. --- dlls/strmbase/renderer.c | 3 ++- dlls/strmbase/transform.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index bb91236c64b..766e467237f 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -294,7 +294,7 @@ HRESULT WINAPI BaseRendererImpl_QueryInterface(IBaseFilter* iface, REFIID riid, ULONG WINAPI BaseRendererImpl_Release(IBaseFilter* iface) { BaseRenderer *This = impl_from_IBaseFilter(iface); - ULONG refCount = BaseFilterImpl_Release(iface); + ULONG refCount = InterlockedDecrement(&This->filter.refCount); if (!refCount) { @@ -319,6 +319,7 @@ ULONG WINAPI BaseRendererImpl_Release(IBaseFilter* iface) CloseHandle(This->ThreadSignal); CloseHandle(This->RenderEvent); QualityControlImpl_Destroy(This->qcimpl); + BaseFilter_Destroy(&This->filter); } return refCount; } diff --git a/dlls/strmbase/transform.c b/dlls/strmbase/transform.c index eba7ad2ee06..0fc75156653 100644 --- a/dlls/strmbase/transform.c +++ b/dlls/strmbase/transform.c @@ -313,7 +313,7 @@ HRESULT WINAPI TransformFilterImpl_QueryInterface(IBaseFilter * iface, REFIID ri ULONG WINAPI TransformFilterImpl_Release(IBaseFilter * iface) { TransformFilter *This = impl_from_IBaseFilter(iface); - ULONG refCount = BaseFilterImpl_Release(iface); + ULONG refCount = InterlockedDecrement(&This->filter.refCount); TRACE("(%p/%p)->() Release from %d\n", This, iface, refCount + 1); @@ -343,6 +343,7 @@ ULONG WINAPI TransformFilterImpl_Release(IBaseFilter * iface) FreeMediaType(&This->pmt); QualityControlImpl_Destroy(This->qcimpl); IUnknown_Release(This->seekthru_unk); + BaseFilter_Destroy(&This->filter); CoTaskMemFree(This); return 0;