Module: wine Branch: master Commit: 023f79a8dd4044a75256bc5adb1f0ee8ed65b431 URL: http://source.winehq.org/git/wine.git/?a=commit;h=023f79a8dd4044a75256bc5adb...
Author: Michael Stefaniuc mstefani@redhat.de Date: Tue Jun 26 23:50:54 2012 +0200
qedit: Basic COM cleanup for SampleGrabber.
---
dlls/qedit/samplegrabber.c | 63 +++++++++++++++++++++++++------------------- 1 files changed, 36 insertions(+), 27 deletions(-)
diff --git a/dlls/qedit/samplegrabber.c b/dlls/qedit/samplegrabber.c index 2d15ca3..0261dd6 100644 --- a/dlls/qedit/samplegrabber.c +++ b/dlls/qedit/samplegrabber.c @@ -360,9 +360,9 @@ typedef struct _SG_Pin {
/* Sample Grabber filter implementation */ typedef struct _SG_Impl { - const IBaseFilterVtbl* IBaseFilter_Vtbl; - const ISampleGrabberVtbl* ISampleGrabber_Vtbl; - const IMemInputPinVtbl* IMemInputPin_Vtbl; + IBaseFilter IBaseFilter_iface; + ISampleGrabber ISampleGrabber_iface; + IMemInputPin IMemInputPin_iface; /* TODO: IMediaPosition, IMediaSeeking, IQualityControl */ LONG refCount; CRITICAL_SECTION critSect; @@ -390,17 +390,17 @@ enum { /* Get the SampleGrabber implementation This pointer from various interface pointers */ static inline SG_Impl *impl_from_IBaseFilter(IBaseFilter *iface) { - return (SG_Impl *)((char*)iface - FIELD_OFFSET(SG_Impl, IBaseFilter_Vtbl)); + return CONTAINING_RECORD(iface, SG_Impl, IBaseFilter_iface); }
static inline SG_Impl *impl_from_ISampleGrabber(ISampleGrabber *iface) { - return (SG_Impl *)((char*)iface - FIELD_OFFSET(SG_Impl, ISampleGrabber_Vtbl)); + return CONTAINING_RECORD(iface, SG_Impl, ISampleGrabber_iface); }
static inline SG_Impl *impl_from_IMemInputPin(IMemInputPin *iface) { - return (SG_Impl *)((char*)iface - FIELD_OFFSET(SG_Impl, IMemInputPin_Vtbl)); + return CONTAINING_RECORD(iface, SG_Impl, IMemInputPin_iface); }
@@ -458,17 +458,17 @@ static HRESULT SampleGrabber_query(SG_Impl *This, REFIID riid, void **ppvObject) IsEqualIID(riid, &IID_IMediaFilter) || IsEqualIID(riid, &IID_IBaseFilter)) { SampleGrabber_addref(This); - *ppvObject = &(This->IBaseFilter_Vtbl); + *ppvObject = &This->IBaseFilter_iface; return S_OK; } else if (IsEqualIID(riid, &IID_ISampleGrabber)) { SampleGrabber_addref(This); - *ppvObject = &(This->ISampleGrabber_Vtbl); + *ppvObject = &This->ISampleGrabber_iface; return S_OK; } else if (IsEqualIID(riid, &IID_IMemInputPin)) { SampleGrabber_addref(This); - *ppvObject = &(This->IMemInputPin_Vtbl); + *ppvObject = &This->IMemInputPin_iface; return S_OK; } else if (IsEqualIID(riid, &IID_IMediaPosition)) @@ -546,23 +546,26 @@ static void SampleGrabber_callback(SG_Impl *This, IMediaSample *sample)
/* IUnknown */ static HRESULT WINAPI -SampleGrabber_IBaseFilter_QueryInterface(IBaseFilter *iface, REFIID riid, void **ppvObject) +SampleGrabber_IBaseFilter_QueryInterface(IBaseFilter *iface, REFIID riid, void **ppv) { - return SampleGrabber_query(impl_from_IBaseFilter(iface), riid, ppvObject); + SG_Impl *This = impl_from_IBaseFilter(iface); + return SampleGrabber_query(This, riid, ppv); }
/* IUnknown */ static ULONG WINAPI SampleGrabber_IBaseFilter_AddRef(IBaseFilter *iface) { - return SampleGrabber_addref(impl_from_IBaseFilter(iface)); + SG_Impl *This = impl_from_IBaseFilter(iface); + return SampleGrabber_addref(This); }
/* IUnknown */ static ULONG WINAPI SampleGrabber_IBaseFilter_Release(IBaseFilter *iface) { - return SampleGrabber_release(impl_from_IBaseFilter(iface)); + SG_Impl *This = impl_from_IBaseFilter(iface); + return SampleGrabber_release(This); }
/* IPersist */ @@ -732,23 +735,26 @@ SampleGrabber_IBaseFilter_QueryVendorInfo(IBaseFilter *iface, LPWSTR *vendor)
/* IUnknown */ static HRESULT WINAPI -SampleGrabber_ISampleGrabber_QueryInterface(ISampleGrabber *iface, REFIID riid, void **ppvObject) +SampleGrabber_ISampleGrabber_QueryInterface(ISampleGrabber *iface, REFIID riid, void **ppv) { - return SampleGrabber_query(impl_from_ISampleGrabber(iface), riid, ppvObject); + SG_Impl *This = impl_from_ISampleGrabber(iface); + return SampleGrabber_query(This, riid, ppv); }
/* IUnknown */ static ULONG WINAPI SampleGrabber_ISampleGrabber_AddRef(ISampleGrabber *iface) { - return SampleGrabber_addref(impl_from_ISampleGrabber(iface)); + SG_Impl *This = impl_from_ISampleGrabber(iface); + return SampleGrabber_addref(This); }
/* IUnknown */ static ULONG WINAPI SampleGrabber_ISampleGrabber_Release(ISampleGrabber *iface) { - return SampleGrabber_release(impl_from_ISampleGrabber(iface)); + SG_Impl *This = impl_from_ISampleGrabber(iface); + return SampleGrabber_release(This); }
/* ISampleGrabber */ @@ -879,23 +885,26 @@ SampleGrabber_ISampleGrabber_SetCallback(ISampleGrabber *iface, ISampleGrabberCB
/* IUnknown */ static HRESULT WINAPI -SampleGrabber_IMemInputPin_QueryInterface(IMemInputPin *iface, REFIID riid, void **ppvObject) +SampleGrabber_IMemInputPin_QueryInterface(IMemInputPin *iface, REFIID riid, void **ppv) { - return SampleGrabber_query(impl_from_IMemInputPin(iface), riid, ppvObject); + SG_Impl *This = impl_from_IMemInputPin(iface); + return SampleGrabber_query(This, riid, ppv); }
/* IUnknown */ static ULONG WINAPI SampleGrabber_IMemInputPin_AddRef(IMemInputPin *iface) { - return SampleGrabber_addref(impl_from_IMemInputPin(iface)); + SG_Impl *This = impl_from_IMemInputPin(iface); + return SampleGrabber_addref(This); }
/* IUnknown */ static ULONG WINAPI SampleGrabber_IMemInputPin_Release(IMemInputPin *iface) { - return SampleGrabber_release(impl_from_IMemInputPin(iface)); + SG_Impl *This = impl_from_IMemInputPin(iface); + return SampleGrabber_release(This); }
/* IMemInputPin */ @@ -1019,7 +1028,7 @@ SampleGrabber_IPin_QueryInterface(IPin *iface, REFIID riid, void **ppvObject) } else if (IsEqualIID(riid, &IID_IMemInputPin)) { SampleGrabber_addref(This->sg); - *ppvObject = &(This->sg->IMemInputPin_Vtbl); + *ppvObject = &This->sg->IMemInputPin_iface; return S_OK; } *ppvObject = NULL; @@ -1214,8 +1223,8 @@ SampleGrabber_IPin_QueryPinInfo(IPin *iface, PIN_INFO *info) TRACE("(%p)->(%p)\n", This, info); if (!info) return E_POINTER; - SampleGrabber_addref(This->sg); - info->pFilter = (IBaseFilter *)This->sg; + IBaseFilter_AddRef(&This->sg->IBaseFilter_iface); + info->pFilter = &This->sg->IBaseFilter_iface; info->dir = This->dir; lstrcpynW(info->achName,This->name,MAX_PIN_NAME); return S_OK; @@ -1440,9 +1449,9 @@ HRESULT SampleGrabber_create(IUnknown *pUnkOuter, LPVOID *ppv) ZeroMemory(obj, sizeof(SG_Impl));
obj->refCount = 1; - obj->IBaseFilter_Vtbl = &IBaseFilter_VTable; - obj->ISampleGrabber_Vtbl = &ISampleGrabber_VTable; - obj->IMemInputPin_Vtbl = &IMemInputPin_VTable; + obj->IBaseFilter_iface.lpVtbl = &IBaseFilter_VTable; + obj->ISampleGrabber_iface.lpVtbl = &ISampleGrabber_VTable; + obj->IMemInputPin_iface.lpVtbl = &IMemInputPin_VTable; obj->pin_in.lpVtbl = &IPin_In_VTable; obj->pin_in.dir = PINDIR_INPUT; obj->pin_in.name = pin_in_name;