Michael Stefaniuc : qedit: COM cleanup for IEnumMediaTypes of SampleGrabber.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Aug 13 04:23:49 CDT 2015
Module: wine
Branch: master
Commit: 2d3edce0f820cb82d187e5537bd8e4867fb08ceb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2d3edce0f820cb82d187e5537bd8e4867fb08ceb
Author: Michael Stefaniuc <mstefani at redhat.de>
Date: Fri Aug 7 23:25:06 2015 +0200
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 537e22c..8b89351 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)
+{
+ return CONTAINING_RECORD(iface, ME_Impl, IEnumMediaTypes_iface);
+}
+
+static HRESULT WINAPI Single_IEnumMediaTypes_QueryInterface(IEnumMediaTypes *iface, REFIID riid,
+ void **ret_iface)
{
- ME_Impl *This = (ME_Impl *)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;
}
More information about the wine-cvs
mailing list