Zebediah Figura : qcap/avico: Use BaseFilterImpl_Release().

Alexandre Julliard julliard at winehq.org
Mon May 27 14:50:19 CDT 2019


Module: wine
Branch: master
Commit: 912dd6ffae678d2037aff42427263e9eb07484e5
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=912dd6ffae678d2037aff42427263e9eb07484e5

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Sat May 25 15:21:23 2019 -0500

qcap/avico: Use BaseFilterImpl_Release().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 e2f21d0..67e7f50 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)




More information about the wine-cvs mailing list