Module: wine Branch: master Commit: 671400c45591d000cbc2ef9b707ec84d355175f7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=671400c45591d000cbc2ef9b70...
Author: Michael Stefaniuc mstefani@redhat.de Date: Tue Dec 21 11:31:10 2010 +0100
qcap: Use ifaces instead of vtbl pointers in VfwCapture.
---
dlls/qcap/vfwcapture.c | 65 +++++++++++++++++++++++++++++------------------ 1 files changed, 40 insertions(+), 25 deletions(-)
diff --git a/dlls/qcap/vfwcapture.c b/dlls/qcap/vfwcapture.c index 387a05e..4492eab 100644 --- a/dlls/qcap/vfwcapture.c +++ b/dlls/qcap/vfwcapture.c @@ -60,9 +60,9 @@ static HRESULT VfwPin_Construct( IBaseFilter *, LPCRITICAL_SECTION, IPin ** ); typedef struct VfwCapture { BaseFilter filter; - const IAMStreamConfigVtbl * IAMStreamConfig_vtbl; - const IAMVideoProcAmpVtbl * IAMVideoProcAmp_vtbl; - const IPersistPropertyBagVtbl * IPersistPropertyBag_vtbl; + IAMStreamConfig IAMStreamConfig_iface; + IAMVideoProcAmp IAMVideoProcAmp_iface; + IPersistPropertyBag IPersistPropertyBag_iface;
BOOL init; Capture *driver_info; @@ -70,6 +70,21 @@ typedef struct VfwCapture IPin * pOutputPin; } VfwCapture;
+static inline VfwCapture *impl_from_IAMStreamConfig(IAMStreamConfig *iface) +{ + return CONTAINING_RECORD(iface, VfwCapture, IAMStreamConfig_iface); +} + +static inline VfwCapture *impl_from_IAMVideoProcAmp(IAMVideoProcAmp *iface) +{ + return CONTAINING_RECORD(iface, VfwCapture, IAMVideoProcAmp_iface); +} + +static inline VfwCapture *impl_from_IPersistPropertyBag(IPersistPropertyBag *iface) +{ + return CONTAINING_RECORD(iface, VfwCapture, IPersistPropertyBag_iface); +} + /* VfwPin implementation */ typedef struct VfwPinImpl { @@ -119,9 +134,9 @@ IUnknown * WINAPI QCAP_createVFWCaptureFilter(IUnknown *pUnkOuter, HRESULT *phr)
BaseFilter_Init(&pVfwCapture->filter, &VfwCapture_Vtbl, &CLSID_VfwCapture, (DWORD_PTR)(__FILE__ ": VfwCapture.csFilter"), &BaseFuncTable);
- pVfwCapture->IAMStreamConfig_vtbl = &IAMStreamConfig_VTable; - pVfwCapture->IAMVideoProcAmp_vtbl = &IAMVideoProcAmp_VTable; - pVfwCapture->IPersistPropertyBag_vtbl = &IPersistPropertyBag_VTable; + pVfwCapture->IAMStreamConfig_iface.lpVtbl = &IAMStreamConfig_VTable; + pVfwCapture->IAMVideoProcAmp_iface.lpVtbl = &IAMVideoProcAmp_VTable; + pVfwCapture->IPersistPropertyBag_iface.lpVtbl = &IPersistPropertyBag_VTable; pVfwCapture->init = FALSE;
hr = VfwPin_Construct((IBaseFilter *)&pVfwCapture->filter.lpVtbl, @@ -152,11 +167,11 @@ static HRESULT WINAPI VfwCapture_QueryInterface(IBaseFilter * iface, REFIID riid *ppv = This; } else if (IsEqualIID(riid, &IID_IAMStreamConfig)) - *ppv = &(This->IAMStreamConfig_vtbl); + *ppv = &This->IAMStreamConfig_iface; else if (IsEqualIID(riid, &IID_IAMVideoProcAmp)) - *ppv = &(This->IAMVideoProcAmp_vtbl); + *ppv = &This->IAMVideoProcAmp_iface; else if (IsEqualIID(riid, &IID_IPersistPropertyBag)) - *ppv = &(This->IPersistPropertyBag_vtbl); + *ppv = &This->IPersistPropertyBag_iface;
if (!IsEqualIID(riid, &IID_IUnknown) && !IsEqualIID(riid, &IID_IPersist) && @@ -271,7 +286,7 @@ static const IBaseFilterVtbl VfwCapture_Vtbl = static HRESULT WINAPI AMStreamConfig_QueryInterface( IAMStreamConfig * iface, REFIID riid, LPVOID * ppv ) { - ICOM_THIS_MULTI(VfwCapture, IAMStreamConfig_vtbl, iface); + VfwCapture *This = impl_from_IAMStreamConfig(iface);
TRACE("%p --> %s\n", This, debugstr_guid(riid));
@@ -289,7 +304,7 @@ AMStreamConfig_QueryInterface( IAMStreamConfig * iface, REFIID riid, LPVOID * pp
static ULONG WINAPI AMStreamConfig_AddRef( IAMStreamConfig * iface ) { - ICOM_THIS_MULTI(VfwCapture, IAMStreamConfig_vtbl, iface); + VfwCapture *This = impl_from_IAMStreamConfig(iface);
TRACE("%p --> Forwarding to VfwCapture (%p)\n", iface, This); return IUnknown_AddRef((IUnknown *)This); @@ -297,7 +312,7 @@ static ULONG WINAPI AMStreamConfig_AddRef( IAMStreamConfig * iface )
static ULONG WINAPI AMStreamConfig_Release( IAMStreamConfig * iface ) { - ICOM_THIS_MULTI(VfwCapture, IAMStreamConfig_vtbl, iface); + VfwCapture *This = impl_from_IAMStreamConfig(iface);
TRACE("%p --> Forwarding to VfwCapture (%p)\n", iface, This); return IUnknown_Release((IUnknown *)This); @@ -307,7 +322,7 @@ static HRESULT WINAPI AMStreamConfig_SetFormat(IAMStreamConfig *iface, AM_MEDIA_TYPE *pmt) { HRESULT hr; - ICOM_THIS_MULTI(VfwCapture, IAMStreamConfig_vtbl, iface); + VfwCapture *This = impl_from_IAMStreamConfig(iface); BasePin *pin;
TRACE("(%p): %p->%p\n", iface, pmt, pmt ? pmt->pbFormat : NULL); @@ -349,7 +364,7 @@ AMStreamConfig_SetFormat(IAMStreamConfig *iface, AM_MEDIA_TYPE *pmt) static HRESULT WINAPI AMStreamConfig_GetFormat( IAMStreamConfig *iface, AM_MEDIA_TYPE **pmt ) { - ICOM_THIS_MULTI(VfwCapture, IAMStreamConfig_vtbl, iface); + VfwCapture *This = impl_from_IAMStreamConfig(iface);
TRACE("%p -> (%p)\n", iface, pmt); return qcap_driver_get_format(This->driver_info, pmt); @@ -400,14 +415,14 @@ AMVideoProcAmp_QueryInterface( IAMVideoProcAmp * iface, REFIID riid,
static ULONG WINAPI AMVideoProcAmp_AddRef(IAMVideoProcAmp * iface) { - ICOM_THIS_MULTI(VfwCapture, IAMVideoProcAmp_vtbl, iface); + VfwCapture *This = impl_from_IAMVideoProcAmp(iface);
return IUnknown_AddRef((IUnknown *)This); }
static ULONG WINAPI AMVideoProcAmp_Release(IAMVideoProcAmp * iface) { - ICOM_THIS_MULTI(VfwCapture, IAMVideoProcAmp_vtbl, iface); + VfwCapture *This = impl_from_IAMVideoProcAmp(iface);
return IUnknown_Release((IUnknown *)This); } @@ -416,7 +431,7 @@ static HRESULT WINAPI AMVideoProcAmp_GetRange( IAMVideoProcAmp * iface, LONG Property, LONG *pMin, LONG *pMax, LONG *pSteppingDelta, LONG *pDefault, LONG *pCapsFlags ) { - ICOM_THIS_MULTI(VfwCapture, IAMVideoProcAmp_vtbl, iface); + VfwCapture *This = impl_from_IAMVideoProcAmp(iface);
return qcap_driver_get_prop_range( This->driver_info, Property, pMin, pMax, pSteppingDelta, pDefault, pCapsFlags ); @@ -426,7 +441,7 @@ static HRESULT WINAPI AMVideoProcAmp_Set( IAMVideoProcAmp * iface, LONG Property, LONG lValue, LONG Flags ) { - ICOM_THIS_MULTI(VfwCapture, IAMVideoProcAmp_vtbl, iface); + VfwCapture *This = impl_from_IAMVideoProcAmp(iface);
return qcap_driver_set_prop(This->driver_info, Property, lValue, Flags); } @@ -435,7 +450,7 @@ static HRESULT WINAPI AMVideoProcAmp_Get( IAMVideoProcAmp * iface, LONG Property, LONG *lValue, LONG *Flags ) { - ICOM_THIS_MULTI(VfwCapture, IAMVideoProcAmp_vtbl, iface); + VfwCapture *This = impl_from_IAMVideoProcAmp(iface);
return qcap_driver_get_prop(This->driver_info, Property, lValue, Flags); } @@ -475,7 +490,7 @@ PPB_QueryInterface( IPersistPropertyBag * iface, REFIID riid, LPVOID * ppv )
static ULONG WINAPI PPB_AddRef(IPersistPropertyBag * iface) { - ICOM_THIS_MULTI(VfwCapture, IPersistPropertyBag_vtbl, iface); + VfwCapture *This = impl_from_IPersistPropertyBag(iface);
TRACE("%p --> Forwarding to VfwCapture (%p)\n", iface, This);
@@ -484,7 +499,7 @@ static ULONG WINAPI PPB_AddRef(IPersistPropertyBag * iface)
static ULONG WINAPI PPB_Release(IPersistPropertyBag * iface) { - ICOM_THIS_MULTI(VfwCapture, IPersistPropertyBag_vtbl, iface); + VfwCapture *This = impl_from_IPersistPropertyBag(iface);
TRACE("%p --> Forwarding to VfwCapture (%p)\n", iface, This);
@@ -494,7 +509,7 @@ static ULONG WINAPI PPB_Release(IPersistPropertyBag * iface) static HRESULT WINAPI PPB_GetClassID( IPersistPropertyBag * iface, CLSID * pClassID ) { - ICOM_THIS_MULTI(VfwCapture, IPersistPropertyBag_vtbl, iface); + VfwCapture *This = impl_from_IPersistPropertyBag(iface);
FIXME("%p - stub\n", This);
@@ -503,7 +518,7 @@ PPB_GetClassID( IPersistPropertyBag * iface, CLSID * pClassID )
static HRESULT WINAPI PPB_InitNew(IPersistPropertyBag * iface) { - ICOM_THIS_MULTI(VfwCapture, IPersistPropertyBag_vtbl, iface); + VfwCapture *This = impl_from_IPersistPropertyBag(iface);
FIXME("%p - stub\n", This);
@@ -514,7 +529,7 @@ static HRESULT WINAPI PPB_Load( IPersistPropertyBag * iface, IPropertyBag *pPropBag, IErrorLog *pErrorLog ) { - ICOM_THIS_MULTI(VfwCapture, IPersistPropertyBag_vtbl, iface); + VfwCapture *This = impl_from_IPersistPropertyBag(iface); HRESULT hr; VARIANT var; const OLECHAR VFWIndex[] = {'V','F','W','I','n','d','e','x',0}; @@ -549,7 +564,7 @@ static HRESULT WINAPI PPB_Save( IPersistPropertyBag * iface, IPropertyBag *pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties ) { - ICOM_THIS_MULTI(VfwCapture, IPersistPropertyBag_vtbl, iface); + VfwCapture *This = impl_from_IPersistPropertyBag(iface); FIXME("%p - stub\n", This); return E_NOTIMPL; }