Zebediah Figura : strmbase: Simplify IEnumMediaTypesImpl_Next().
Alexandre Julliard
julliard at winehq.org
Mon Jul 1 15:15:14 CDT 2019
Module: wine
Branch: master
Commit: cf09b5a80031d8fe67c5e8b1b7561de3e7273db2
URL: https://source.winehq.org/git/wine.git/?a=commit;h=cf09b5a80031d8fe67c5e8b1b7561de3e7273db2
Author: Zebediah Figura <z.figura12 at gmail.com>
Date: Sat Jun 29 13:43:49 2019 -0500
strmbase: Simplify IEnumMediaTypesImpl_Next().
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/strmbase/mediatype.c | 43 +++++++++++++++++--------------------------
1 file changed, 17 insertions(+), 26 deletions(-)
diff --git a/dlls/strmbase/mediatype.c b/dlls/strmbase/mediatype.c
index 8ad2e22..66b5fa1 100644
--- a/dlls/strmbase/mediatype.c
+++ b/dlls/strmbase/mediatype.c
@@ -172,44 +172,35 @@ static ULONG WINAPI IEnumMediaTypesImpl_Release(IEnumMediaTypes * iface)
return ref;
}
-static HRESULT WINAPI IEnumMediaTypesImpl_Next(IEnumMediaTypes * iface, ULONG cMediaTypes, AM_MEDIA_TYPE ** ppMediaTypes, ULONG * pcFetched)
+static HRESULT WINAPI IEnumMediaTypesImpl_Next(IEnumMediaTypes *iface,
+ ULONG count, AM_MEDIA_TYPE **mts, ULONG *ret_count)
{
- ULONG cFetched;
- IEnumMediaTypesImpl *This = impl_from_IEnumMediaTypes(iface);
-
- TRACE("(%p)->(%u, %p, %p)\n", iface, cMediaTypes, ppMediaTypes, pcFetched);
+ IEnumMediaTypesImpl *enummt = impl_from_IEnumMediaTypes(iface);
+ ULONG i;
- cFetched = min(This->count, This->uIndex + cMediaTypes) - This->uIndex;
+ TRACE("iface %p, count %u, mts %p, ret_count %p.\n", iface, count, mts, ret_count);
- if (This->currentVersion != This->mediaVersionFunction(This->basePin))
+ if (enummt->currentVersion != enummt->mediaVersionFunction(enummt->basePin))
return VFW_E_ENUM_OUT_OF_SYNC;
- TRACE("Next uIndex: %u, cFetched: %u\n", This->uIndex, cFetched);
-
- if (cFetched > 0)
+ for (i = 0; i < count && enummt->uIndex + i < enummt->count; i++)
{
- ULONG i;
- for (i = 0; i < cFetched; i++)
+ if (!(mts[i] = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE)))
+ || FAILED(enummt->enumMediaFunction(enummt->basePin, enummt->uIndex + i, mts[i])))
{
- if (!(ppMediaTypes[i] = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE)))
- || FAILED(This->enumMediaFunction(This->basePin, This->uIndex + i, ppMediaTypes[i])))
- {
- while (i--)
- DeleteMediaType(ppMediaTypes[i]);
- *pcFetched = 0;
- return E_OUTOFMEMORY;
- }
+ while (i--)
+ DeleteMediaType(mts[i]);
+ *ret_count = 0;
+ return E_OUTOFMEMORY;
}
}
- if ((cMediaTypes != 1) || pcFetched)
- *pcFetched = cFetched;
+ if ((count != 1) || ret_count)
+ *ret_count = i;
- This->uIndex += cFetched;
+ enummt->uIndex += i;
- if (cFetched != cMediaTypes)
- return S_FALSE;
- return S_OK;
+ return i == count ? S_OK : S_FALSE;
}
static HRESULT WINAPI IEnumMediaTypesImpl_Skip(IEnumMediaTypes * iface, ULONG cMediaTypes)
More information about the wine-cvs
mailing list