[PATCH 3/5] qcap/avico: Use BaseFilterImpl_Release().
Zebediah Figura
z.figura12 at gmail.com
Sat May 25 15:21:23 CDT 2019
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/qcap/avico.c | 40 +++++++++++++++++-----------------------
1 file changed, 17 insertions(+), 23 deletions(-)
diff --git a/dlls/qcap/avico.c b/dlls/qcap/avico.c
index e2f21d08fc4..67e7f50d987 100644
--- a/dlls/qcap/avico.c
+++ b/dlls/qcap/avico.c
@@ -147,28 +147,6 @@ static HRESULT WINAPI AVICompressor_QueryInterface(IBaseFilter *iface, REFIID ri
}
-static ULONG WINAPI AVICompressor_Release(IBaseFilter *iface)
-{
- AVICompressor *This = impl_from_IBaseFilter(iface);
- ULONG ref = InterlockedDecrement(&This->filter.refCount);
-
- TRACE("(%p) ref=%d\n", This, ref);
-
- if(!ref) {
- if(This->hic)
- ICClose(This->hic);
- heap_free(This->videoinfo);
- if(This->in)
- BaseInputPinImpl_Release(&This->in->pin.IPin_iface);
- if(This->out)
- BaseOutputPinImpl_Release(&This->out->pin.IPin_iface);
- strmbase_filter_cleanup(&This->filter);
- heap_free(This);
- }
-
- return ref;
-}
-
static HRESULT WINAPI AVICompressor_Stop(IBaseFilter *iface)
{
AVICompressor *This = impl_from_IBaseFilter(iface);
@@ -229,7 +207,7 @@ static HRESULT WINAPI AVICompressor_QueryVendorInfo(IBaseFilter *iface, LPWSTR *
static const IBaseFilterVtbl AVICompressorVtbl = {
AVICompressor_QueryInterface,
BaseFilterImpl_AddRef,
- AVICompressor_Release,
+ BaseFilterImpl_Release,
BaseFilterImpl_GetClassID,
AVICompressor_Stop,
AVICompressor_Pause,
@@ -260,8 +238,24 @@ static IPin *avi_compressor_get_pin(BaseFilter *iface, unsigned int index)
return ret;
}
+static void avi_compressor_destroy(BaseFilter *iface)
+{
+ AVICompressor *filter = impl_from_BaseFilter(iface);
+
+ if (filter->hic)
+ ICClose(filter->hic);
+ heap_free(filter->videoinfo);
+ if (filter->in)
+ BaseInputPinImpl_Release(&filter->in->pin.IPin_iface);
+ if (filter->out)
+ BaseOutputPinImpl_Release(&filter->out->pin.IPin_iface);
+ strmbase_filter_cleanup(&filter->filter);
+ heap_free(filter);
+}
+
static const BaseFilterFuncTable filter_func_table = {
.filter_get_pin = avi_compressor_get_pin,
+ .filter_destroy = avi_compressor_destroy,
};
static AVICompressor *impl_from_IPersistPropertyBag(IPersistPropertyBag *iface)
--
2.21.0
More information about the wine-devel
mailing list