[PATCH 4/5] strmbase: Get rid of the "enumMediaFunction" field from IEnumMediaTypesImpl.
Zebediah Figura
z.figura12 at gmail.com
Mon Sep 23 19:33:23 CDT 2019
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
dlls/strmbase/mediatype.c | 20 +++++---------------
dlls/strmbase/pin.c | 2 +-
dlls/strmbase/strmbase_private.h | 3 +--
3 files changed, 7 insertions(+), 18 deletions(-)
diff --git a/dlls/strmbase/mediatype.c b/dlls/strmbase/mediatype.c
index bb59a815847..af6832a571e 100644
--- a/dlls/strmbase/mediatype.c
+++ b/dlls/strmbase/mediatype.c
@@ -82,7 +82,6 @@ typedef struct IEnumMediaTypesImpl
IEnumMediaTypes IEnumMediaTypes_iface;
LONG refCount;
BasePin *basePin;
- BasePin_GetMediaType enumMediaFunction;
ULONG count;
ULONG uIndex;
} IEnumMediaTypesImpl;
@@ -94,11 +93,9 @@ static inline IEnumMediaTypesImpl *impl_from_IEnumMediaTypes(IEnumMediaTypes *if
static const struct IEnumMediaTypesVtbl IEnumMediaTypesImpl_Vtbl;
-HRESULT WINAPI EnumMediaTypes_Construct(BasePin *basePin, BasePin_GetMediaType enumFunc, IEnumMediaTypes **ppEnum)
+HRESULT enum_media_types_create(BasePin *basePin, IEnumMediaTypes **ppEnum)
{
- ULONG i;
IEnumMediaTypesImpl * pEnumMediaTypes = CoTaskMemAlloc(sizeof(IEnumMediaTypesImpl));
- AM_MEDIA_TYPE amt;
*ppEnum = NULL;
@@ -108,18 +105,11 @@ HRESULT WINAPI EnumMediaTypes_Construct(BasePin *basePin, BasePin_GetMediaType e
pEnumMediaTypes->IEnumMediaTypes_iface.lpVtbl = &IEnumMediaTypesImpl_Vtbl;
pEnumMediaTypes->refCount = 1;
pEnumMediaTypes->uIndex = 0;
- pEnumMediaTypes->enumMediaFunction = enumFunc;
IPin_AddRef(&basePin->IPin_iface);
pEnumMediaTypes->basePin = basePin;
- i = 0;
- while (enumFunc(basePin, i, &amt) == S_OK)
- {
- FreeMediaType(&amt);
- i++;
- }
+ IEnumMediaTypes_Reset(&pEnumMediaTypes->IEnumMediaTypes_iface);
- pEnumMediaTypes->count = i;
*ppEnum = &pEnumMediaTypes->IEnumMediaTypes_iface;
return S_OK;
}
@@ -179,7 +169,7 @@ static HRESULT WINAPI IEnumMediaTypesImpl_Next(IEnumMediaTypes *iface,
for (i = 0; i < count && enummt->uIndex + i < enummt->count; i++)
{
if (!(mts[i] = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE)))
- || FAILED(enummt->enumMediaFunction(enummt->basePin, enummt->uIndex + i, mts[i])))
+ || FAILED(enummt->basePin->pFuncsTable->pfnGetMediaType(enummt->basePin, enummt->uIndex + i, mts[i])))
{
while (i--)
DeleteMediaType(mts[i]);
@@ -216,7 +206,7 @@ static HRESULT WINAPI IEnumMediaTypesImpl_Reset(IEnumMediaTypes * iface)
TRACE("(%p)->()\n", iface);
i = 0;
- while (This->enumMediaFunction(This->basePin, i, &amt) == S_OK)
+ while (This->basePin->pFuncsTable->pfnGetMediaType(This->basePin, i, &amt) == S_OK)
{
FreeMediaType(&amt);
i++;
@@ -234,7 +224,7 @@ static HRESULT WINAPI IEnumMediaTypesImpl_Clone(IEnumMediaTypes * iface, IEnumMe
TRACE("(%p)->(%p)\n", iface, ppEnum);
- hr = EnumMediaTypes_Construct(This->basePin, This->enumMediaFunction, ppEnum);
+ hr = enum_media_types_create(This->basePin, ppEnum);
if (FAILED(hr))
return hr;
return IEnumMediaTypes_Skip(*ppEnum, This->uIndex);
diff --git a/dlls/strmbase/pin.c b/dlls/strmbase/pin.c
index 7991fdc5477..e8fcbf90f1c 100644
--- a/dlls/strmbase/pin.c
+++ b/dlls/strmbase/pin.c
@@ -301,7 +301,7 @@ HRESULT WINAPI BasePinImpl_EnumMediaTypes(IPin *iface, IEnumMediaTypes **enum_me
TRACE("iface %p, enum_media_types %p.\n", iface, enum_media_types);
- return EnumMediaTypes_Construct(pin, pin->pFuncsTable->pfnGetMediaType, enum_media_types);
+ return enum_media_types_create(pin, enum_media_types);
}
HRESULT WINAPI BasePinImpl_QueryInternalConnections(IPin * iface, IPin ** apPin, ULONG * cPin)
diff --git a/dlls/strmbase/strmbase_private.h b/dlls/strmbase/strmbase_private.h
index b5e6d4bd188..98a5a25d714 100644
--- a/dlls/strmbase/strmbase_private.h
+++ b/dlls/strmbase/strmbase_private.h
@@ -63,8 +63,7 @@ void QualityControlRender_BeginRender(QualityControlImpl *This, REFERENCE_TIME s
void QualityControlRender_EndRender(QualityControlImpl *This);
HRESULT enum_pins_create(struct strmbase_filter *filter, IEnumPins **enum_pins);
-HRESULT WINAPI EnumMediaTypes_Construct(BasePin *pin, BasePin_GetMediaType enumFunc,
- IEnumMediaTypes **enum_media_types) DECLSPEC_HIDDEN;
+HRESULT enum_media_types_create(BasePin *pin, IEnumMediaTypes **enum_media_types) DECLSPEC_HIDDEN;
HRESULT WINAPI RendererPosPassThru_RegisterMediaTime(IUnknown *iface, REFERENCE_TIME start);
HRESULT WINAPI RendererPosPassThru_ResetMediaTime(IUnknown *iface);
--
2.23.0
More information about the wine-devel
mailing list