Zebediah Figura : qcap/vfwcapture: Don' t expose IAMStreamConfig from the filter.
Alexandre Julliard
julliard at winehq.org
Wed Jun 26 16:15:39 CDT 2019
Module: wine
Branch: master
Commit: 15b3eba742301147571f6b168255d52f728d14d6
URL: https://source.winehq.org/git/wine.git/?a=commit;h=15b3eba742301147571f6b168255d52f728d14d6
Author: Zebediah Figura <z.figura12 at gmail.com>
Date: Tue Jun 25 20:38:12 2019 -0500
qcap/vfwcapture: Don't expose IAMStreamConfig from the filter.
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
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 d880a26..df26b54 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 83682b8..519543e 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)
{
More information about the wine-cvs
mailing list