Michael Stefaniuc : qedit: Simplify/ fix the creation of the IEnumMediaTypes.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Aug 13 04:23:49 CDT 2015
Module: wine
Branch: master
Commit: f34efaab98bf6ab2be4ebfd35f9bc287fdfe693b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f34efaab98bf6ab2be4ebfd35f9bc287fdfe693b
Author: Michael Stefaniuc <mstefani at redhat.de>
Date: Fri Aug 7 23:27:20 2015 +0200
qedit: Simplify/fix the creation of the IEnumMediaTypes.
---
dlls/qedit/samplegrabber.c | 41 +++++++++++++++++++++--------------------
1 file changed, 21 insertions(+), 20 deletions(-)
diff --git a/dlls/qedit/samplegrabber.c b/dlls/qedit/samplegrabber.c
index 8b89351..e9e4906 100644
--- a/dlls/qedit/samplegrabber.c
+++ b/dlls/qedit/samplegrabber.c
@@ -37,7 +37,7 @@ static const WCHAR vendor_name[] = { 'W', 'i', 'n', 'e', 0 };
static const WCHAR pin_in_name[] = { 'I', 'n', 0 };
static const WCHAR pin_out_name[] = { 'O', 'u', 't', 0 };
-static IEnumMediaTypes *mediaenum_create(const AM_MEDIA_TYPE *mtype);
+static IEnumMediaTypes *mediaenum_create(const AM_MEDIA_TYPE *mtype, BOOL past);
/* Single media type enumerator */
typedef struct _ME_Impl {
@@ -151,10 +151,9 @@ static HRESULT WINAPI Single_IEnumMediaTypes_Clone(IEnumMediaTypes *iface, IEnum
TRACE("(%p)->(%p)\n", This, me);
if (!me)
return E_POINTER;
- *me = mediaenum_create(&This->mtype);
+ *me = mediaenum_create(&This->mtype, This->past);
if (!*me)
return E_OUTOFMEMORY;
- ((ME_Impl *)*me)->past = This->past;
return S_OK;
}
@@ -172,27 +171,29 @@ static const IEnumMediaTypesVtbl IEnumMediaTypes_VTable =
Single_IEnumMediaTypes_Clone,
};
-static IEnumMediaTypes *mediaenum_create(const AM_MEDIA_TYPE *mtype)
+static IEnumMediaTypes *mediaenum_create(const AM_MEDIA_TYPE *mtype, BOOL past)
{
ME_Impl *obj = CoTaskMemAlloc(sizeof(ME_Impl));
- if (obj) {
- ZeroMemory(obj, sizeof(ME_Impl));
- obj->IEnumMediaTypes_iface.lpVtbl = &IEnumMediaTypes_VTable;
- obj->refCount = 1;
- obj->past = FALSE;
- if (mtype) {
- obj->mtype = *mtype;
- obj->mtype.pUnk = NULL;
- if (mtype->cbFormat) {
- obj->mtype.pbFormat = CoTaskMemAlloc(mtype->cbFormat);
- CopyMemory(obj->mtype.pbFormat, mtype->pbFormat, mtype->cbFormat);
- }
- else
- obj->mtype.pbFormat = NULL;
+
+ if (!obj)
+ return NULL;
+ ZeroMemory(obj, sizeof(*obj));
+ obj->IEnumMediaTypes_iface.lpVtbl = &IEnumMediaTypes_VTable;
+ obj->refCount = 1;
+ obj->past = past;
+ if (mtype) {
+ obj->mtype = *mtype;
+ obj->mtype.pUnk = NULL;
+ if (mtype->cbFormat) {
+ obj->mtype.pbFormat = CoTaskMemAlloc(mtype->cbFormat);
+ CopyMemory(obj->mtype.pbFormat, mtype->pbFormat, mtype->cbFormat);
}
else
- obj->mtype.majortype = GUID_NULL;
+ obj->mtype.pbFormat = NULL;
}
+ else
+ obj->mtype.majortype = GUID_NULL;
+
return &obj->IEnumMediaTypes_iface;
}
@@ -1095,7 +1096,7 @@ SampleGrabber_IPin_EnumMediaTypes(IPin *iface, IEnumMediaTypes **mtypes)
TRACE("(%p)->(%p)\n", This, mtypes);
if (!mtypes)
return E_POINTER;
- *mtypes = mediaenum_create(This->sg->pin_in.pair ? &This->sg->mtype : NULL);
+ *mtypes = mediaenum_create(This->sg->pin_in.pair ? &This->sg->mtype : NULL, FALSE);
return *mtypes ? S_OK : E_OUTOFMEMORY;
}
More information about the wine-cvs
mailing list