[PATCH 2/5] qcap/vfwcapture: Don't expose IAMStreamConfig from the filter.

Zebediah Figura z.figura12 at gmail.com
Tue Jun 25 20:38:12 CDT 2019


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/qcap/tests/qcap.c |  2 +-
 dlls/qcap/vfwcapture.c | 26 ++++++++++----------------
 2 files changed, 11 insertions(+), 17 deletions(-)

diff --git a/dlls/qcap/tests/qcap.c b/dlls/qcap/tests/qcap.c
index d880a26a671..df26b5469dc 100644
--- a/dlls/qcap/tests/qcap.c
+++ b/dlls/qcap/tests/qcap.c
@@ -1809,7 +1809,7 @@ static void test_COM_vfwcapture(void)
 
     /* Unsupported interfaces */
     hr = IBaseFilter_QueryInterface(bf, &IID_IAMStreamConfig, (void**)&unk);
-    todo_wine ok(hr == E_NOINTERFACE, "QueryInterface for IID_IAMStreamConfig failed: %08x\n", hr);
+    ok(hr == E_NOINTERFACE, "QueryInterface for IID_IAMStreamConfig failed: %08x\n", hr);
     hr = IBaseFilter_QueryInterface(bf, &IID_IAMVideoProcAmp, (void**)&unk);
     todo_wine ok(hr == E_NOINTERFACE, "QueryInterface for IID_IAMVideoProcAmp failed: %08x\n", hr);
     hr = IBaseFilter_QueryInterface(bf, &IID_IOverlayNotify, (void**)&unk);
diff --git a/dlls/qcap/vfwcapture.c b/dlls/qcap/vfwcapture.c
index 83682b89597..519543e1478 100644
--- a/dlls/qcap/vfwcapture.c
+++ b/dlls/qcap/vfwcapture.c
@@ -125,8 +125,6 @@ static HRESULT vfw_capture_query_interface(BaseFilter *iface, REFIID iid, void *
 
     if (IsEqualGUID(iid, &IID_IPersistPropertyBag))
         *out = &filter->IPersistPropertyBag_iface;
-    else if (IsEqualGUID(iid, &IID_IAMStreamConfig))
-        *out = &filter->IAMStreamConfig_iface;
     else if (IsEqualGUID(iid, &IID_IAMVideoProcAmp))
         *out = &filter->IAMVideoProcAmp_iface;
     else
@@ -187,26 +185,22 @@ static const IBaseFilterVtbl VfwCapture_Vtbl =
 };
 
 /* AMStreamConfig interface, we only need to implement {G,S}etFormat */
-static HRESULT WINAPI AMStreamConfig_QueryInterface(IAMStreamConfig *iface, REFIID riid,
-        void **ret_iface)
+static HRESULT WINAPI AMStreamConfig_QueryInterface(IAMStreamConfig *iface, REFIID iid, void **out)
 {
-    VfwCapture *This = impl_from_IAMStreamConfig(iface);
-
-    return IUnknown_QueryInterface(This->filter.outer_unk, riid, ret_iface);
+    VfwCapture *filter = impl_from_IAMStreamConfig(iface);
+    return IPin_QueryInterface(&filter->source.pin.IPin_iface, iid, out);
 }
 
-static ULONG WINAPI AMStreamConfig_AddRef( IAMStreamConfig * iface )
+static ULONG WINAPI AMStreamConfig_AddRef(IAMStreamConfig *iface)
 {
-    VfwCapture *This = impl_from_IAMStreamConfig(iface);
-
-    return IUnknown_AddRef(This->filter.outer_unk);
+    VfwCapture *filter = impl_from_IAMStreamConfig(iface);
+    return IPin_AddRef(&filter->source.pin.IPin_iface);
 }
 
-static ULONG WINAPI AMStreamConfig_Release( IAMStreamConfig * iface )
+static ULONG WINAPI AMStreamConfig_Release(IAMStreamConfig *iface)
 {
-    VfwCapture *This = impl_from_IAMStreamConfig(iface);
-
-    return IUnknown_Release(This->filter.outer_unk);
+    VfwCapture *filter = impl_from_IAMStreamConfig(iface);
+    return IPin_Release(&filter->source.pin.IPin_iface);
 }
 
 static HRESULT WINAPI
@@ -580,7 +574,7 @@ static HRESULT WINAPI VfwPin_QueryInterface(IPin * iface, REFIID riid, LPVOID *
     else if (IsEqualIID(riid, &IID_IKsPropertySet))
         *ppv = &filter->IKsPropertySet_iface;
     else if (IsEqualIID(riid, &IID_IAMStreamConfig))
-        return IUnknown_QueryInterface(&filter->filter.IBaseFilter_iface, riid, ppv);
+        *ppv = &filter->IAMStreamConfig_iface;
 
     if (*ppv)
     {
-- 
2.22.0




More information about the wine-devel mailing list