From 2d3edce0f820cb82d187e5537bd8e4867fb08ceb Mon Sep 17 00:00:00 2001 From: Michael Stefaniuc Date: Fri, 7 Aug 2015 23:25:06 +0200 Subject: [PATCH] qedit: COM cleanup for IEnumMediaTypes of SampleGrabber. --- dlls/qedit/samplegrabber.c | 88 +++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/dlls/qedit/samplegrabber.c b/dlls/qedit/samplegrabber.c index 537e22cfe72..8b893515cd2 100644 --- a/dlls/qedit/samplegrabber.c +++ b/dlls/qedit/samplegrabber.c @@ -41,7 +41,7 @@ static IEnumMediaTypes *mediaenum_create(const AM_MEDIA_TYPE *mtype); /* Single media type enumerator */ typedef struct _ME_Impl { - IEnumMediaTypes me; + IEnumMediaTypes IEnumMediaTypes_iface; LONG refCount; BOOL past; AM_MEDIA_TYPE mtype; @@ -50,22 +50,42 @@ typedef struct _ME_Impl { /* IEnumMediaTypes interface implementation */ -/* IUnknown */ -static ULONG WINAPI -Single_IEnumMediaTypes_AddRef(IEnumMediaTypes *iface) +static inline ME_Impl *impl_from_IEnumMediaTypes(IEnumMediaTypes *iface) { - ME_Impl *This = (ME_Impl *)iface; + return CONTAINING_RECORD(iface, ME_Impl, IEnumMediaTypes_iface); +} + +static HRESULT WINAPI Single_IEnumMediaTypes_QueryInterface(IEnumMediaTypes *iface, REFIID riid, + void **ret_iface) +{ + ME_Impl *This = impl_from_IEnumMediaTypes(iface); + + TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ret_iface); + + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IEnumMediaTypes)) { + *ret_iface = iface; + IEnumMediaTypes_AddRef(iface); + return S_OK; + } + *ret_iface = NULL; + WARN("(%p, %s,%p): not found\n", This, debugstr_guid(riid), ret_iface); + return E_NOINTERFACE; +} + +static ULONG WINAPI Single_IEnumMediaTypes_AddRef(IEnumMediaTypes *iface) +{ + ME_Impl *This = impl_from_IEnumMediaTypes(iface); ULONG refCount = InterlockedIncrement(&This->refCount); + TRACE("(%p) new ref = %u\n", This, refCount); return refCount; } -/* IUnknown */ -static ULONG WINAPI -Single_IEnumMediaTypes_Release(IEnumMediaTypes *iface) +static ULONG WINAPI Single_IEnumMediaTypes_Release(IEnumMediaTypes *iface) { - ME_Impl *This = (ME_Impl *)iface; + ME_Impl *This = impl_from_IEnumMediaTypes(iface); ULONG refCount = InterlockedDecrement(&This->refCount); + TRACE("(%p) new ref = %u\n", This, refCount); if (refCount == 0) { @@ -77,30 +97,13 @@ Single_IEnumMediaTypes_Release(IEnumMediaTypes *iface) return refCount; } -/* IUnknown */ -static HRESULT WINAPI -Single_IEnumMediaTypes_QueryInterface(IEnumMediaTypes *iface, REFIID riid, void **ppvObject) -{ - ME_Impl *This = (ME_Impl *)iface; - TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject); - - if (IsEqualIID(riid, &IID_IUnknown) || - IsEqualIID(riid, &IID_IEnumMediaTypes)) { - Single_IEnumMediaTypes_AddRef(iface); - *ppvObject = &(This->me); - return S_OK; - } - *ppvObject = NULL; - WARN("(%p, %s,%p): not found\n", This, debugstr_guid(riid), ppvObject); - return E_NOINTERFACE; -} - /* IEnumMediaTypes */ -static HRESULT WINAPI -Single_IEnumMediaTypes_Next(IEnumMediaTypes *iface, ULONG nTypes, AM_MEDIA_TYPE **types, ULONG *fetched) +static HRESULT WINAPI Single_IEnumMediaTypes_Next(IEnumMediaTypes *iface, ULONG nTypes, + AM_MEDIA_TYPE **types, ULONG *fetched) { - ME_Impl *This = (ME_Impl *)iface; + ME_Impl *This = impl_from_IEnumMediaTypes(iface); ULONG count = 0; + TRACE("(%p)->(%u, %p, %p)\n", This, nTypes, types, fetched); if (!nTypes) return E_INVALIDARG; @@ -122,32 +125,29 @@ Single_IEnumMediaTypes_Next(IEnumMediaTypes *iface, ULONG nTypes, AM_MEDIA_TYPE return (count == nTypes) ? S_OK : S_FALSE; } -/* IEnumMediaTypes */ -static HRESULT WINAPI -Single_IEnumMediaTypes_Skip(IEnumMediaTypes *iface, ULONG nTypes) +static HRESULT WINAPI Single_IEnumMediaTypes_Skip(IEnumMediaTypes *iface, ULONG nTypes) { - ME_Impl *This = (ME_Impl *)iface; + ME_Impl *This = impl_from_IEnumMediaTypes(iface); + TRACE("(%p)->(%u)\n", This, nTypes); if (nTypes) This->past = TRUE; return This->past ? S_FALSE : S_OK; } -/* IEnumMediaTypes */ -static HRESULT WINAPI -Single_IEnumMediaTypes_Reset(IEnumMediaTypes *iface) +static HRESULT WINAPI Single_IEnumMediaTypes_Reset(IEnumMediaTypes *iface) { - ME_Impl *This = (ME_Impl *)iface; + ME_Impl *This = impl_from_IEnumMediaTypes(iface); + TRACE("(%p)->()\n", This); This->past = FALSE; return S_OK; } -/* IEnumMediaTypes */ -static HRESULT WINAPI -Single_IEnumMediaTypes_Clone(IEnumMediaTypes *iface, IEnumMediaTypes **me) +static HRESULT WINAPI Single_IEnumMediaTypes_Clone(IEnumMediaTypes *iface, IEnumMediaTypes **me) { - ME_Impl *This = (ME_Impl *)iface; + ME_Impl *This = impl_from_IEnumMediaTypes(iface); + TRACE("(%p)->(%p)\n", This, me); if (!me) return E_POINTER; @@ -177,7 +177,7 @@ static IEnumMediaTypes *mediaenum_create(const AM_MEDIA_TYPE *mtype) ME_Impl *obj = CoTaskMemAlloc(sizeof(ME_Impl)); if (obj) { ZeroMemory(obj, sizeof(ME_Impl)); - obj->me.lpVtbl = &IEnumMediaTypes_VTable; + obj->IEnumMediaTypes_iface.lpVtbl = &IEnumMediaTypes_VTable; obj->refCount = 1; obj->past = FALSE; if (mtype) { @@ -193,7 +193,7 @@ static IEnumMediaTypes *mediaenum_create(const AM_MEDIA_TYPE *mtype) else obj->mtype.majortype = GUID_NULL; } - return &obj->me; + return &obj->IEnumMediaTypes_iface; }