[PATCH 3/5] qcap: There can be only ONE QueryInterface in VfwCapture!
Michael Stefaniuc
mstefani at redhat.de
Mon Jul 27 02:28:22 CDT 2015
---
dlls/qcap/vfwcapture.c | 55 +++++++++-----------------------------------------
1 file changed, 10 insertions(+), 45 deletions(-)
diff --git a/dlls/qcap/vfwcapture.c b/dlls/qcap/vfwcapture.c
index 67cc8f5..4f7508a 100644
--- a/dlls/qcap/vfwcapture.c
+++ b/dlls/qcap/vfwcapture.c
@@ -276,23 +276,12 @@ static const IBaseFilterVtbl VfwCapture_Vtbl =
};
/* AMStreamConfig interface, we only need to implement {G,S}etFormat */
-static HRESULT WINAPI
-AMStreamConfig_QueryInterface( IAMStreamConfig * iface, REFIID riid, LPVOID * ppv )
+static HRESULT WINAPI AMStreamConfig_QueryInterface(IAMStreamConfig *iface, REFIID riid,
+ void **ret_iface)
{
VfwCapture *This = impl_from_IAMStreamConfig(iface);
- TRACE("%p --> %s\n", This, debugstr_guid(riid));
-
- if (IsEqualIID(riid, &IID_IUnknown) ||
- IsEqualIID(riid, &IID_IAMStreamConfig))
- {
- IAMStreamConfig_AddRef(iface);
- *ppv = iface;
- return S_OK;
- }
-
- FIXME("No interface for iid %s\n", debugstr_guid(riid));
- return E_NOINTERFACE;
+ return IUnknown_QueryInterface(&This->filter.IBaseFilter_iface, riid, ret_iface);
}
static ULONG WINAPI AMStreamConfig_AddRef( IAMStreamConfig * iface )
@@ -391,20 +380,12 @@ static const IAMStreamConfigVtbl IAMStreamConfig_VTable =
AMStreamConfig_GetStreamCaps
};
-static HRESULT WINAPI
-AMVideoProcAmp_QueryInterface( IAMVideoProcAmp * iface, REFIID riid,
- LPVOID * ppv )
+static HRESULT WINAPI AMVideoProcAmp_QueryInterface(IAMVideoProcAmp *iface, REFIID riid,
+ void **ret_iface)
{
- if (IsEqualIID(riid, &IID_IUnknown) ||
- IsEqualIID(riid, &IID_IAMVideoProcAmp))
- {
- *ppv = iface;
- IAMVideoProcAmp_AddRef( iface );
- return S_OK;
- }
+ VfwCapture *This = impl_from_IAMVideoProcAmp(iface);
- FIXME("No interface for iid %s\n", debugstr_guid(riid));
- return E_NOINTERFACE;
+ return IUnknown_QueryInterface(&This->filter.IBaseFilter_iface, riid, ret_iface);
}
static ULONG WINAPI AMVideoProcAmp_AddRef(IAMVideoProcAmp * iface)
@@ -459,27 +440,11 @@ static const IAMVideoProcAmpVtbl IAMVideoProcAmp_VTable =
AMVideoProcAmp_Get,
};
-static HRESULT WINAPI
-PPB_QueryInterface( IPersistPropertyBag * iface, REFIID riid, LPVOID * ppv )
+static HRESULT WINAPI PPB_QueryInterface(IPersistPropertyBag *iface, REFIID riid, void **ret_iface)
{
- if (IsEqualIID(riid, &IID_IUnknown) ||
- IsEqualIID(riid, &IID_IPersist) ||
- IsEqualIID(riid, &IID_IPersistPropertyBag))
- {
- IPersistPropertyBag_AddRef(iface);
- *ppv = iface;
- return S_OK;
- }
- if (IsEqualIID(riid, &IID_IBaseFilter))
- {
- /* FIXME: native devenum asks for IBaseFilter, should we return it? */
- IPersistPropertyBag_AddRef(iface);
- *ppv = iface;
- return S_OK;
- }
+ VfwCapture *This = impl_from_IPersistPropertyBag(iface);
- FIXME("No interface for iid %s\n", debugstr_guid(riid));
- return E_NOINTERFACE;
+ return IUnknown_QueryInterface(&This->filter.IBaseFilter_iface, riid, ret_iface);
}
static ULONG WINAPI PPB_AddRef(IPersistPropertyBag * iface)
--
2.1.0
More information about the wine-patches
mailing list