Michael Stefaniuc : qedit: Basic COM cleanup for SampleGrabber.
Alexandre Julliard
julliard at winehq.org
Wed Jun 27 19:13:57 CDT 2012
Module: wine
Branch: master
Commit: 023f79a8dd4044a75256bc5adb1f0ee8ed65b431
URL: http://source.winehq.org/git/wine.git/?a=commit;h=023f79a8dd4044a75256bc5adb1f0ee8ed65b431
Author: Michael Stefaniuc <mstefani at 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;
More information about the wine-cvs
mailing list