[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