[PATCH 1/5] strmbase: Remove function pointers from the IEnumPinsImpl structure.

Zebediah Figura z.figura12 at gmail.com
Mon May 13 22:17:54 CDT 2019


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/strmbase/enumpins.c         | 39 +++++++++++++-------------------
 dlls/strmbase/filter.c           | 21 ++++++-----------
 dlls/strmbase/strmbase_private.h |  4 +---
 include/wine/strmbase.h          |  4 +---
 4 files changed, 25 insertions(+), 43 deletions(-)

diff --git a/dlls/strmbase/enumpins.c b/dlls/strmbase/enumpins.c
index 65a11bd34e..7aa66112c4 100644
--- a/dlls/strmbase/enumpins.c
+++ b/dlls/strmbase/enumpins.c
@@ -29,9 +29,6 @@ typedef struct IEnumPinsImpl
     LONG refCount;
     ULONG uIndex;
     BaseFilter *base;
-    BaseFilter_GetPin receive_pin;
-    BaseFilter_GetPinCount receive_pincount;
-    BaseFilter_GetPinVersion receive_version;
     DWORD Version;
 } IEnumPinsImpl;
 
@@ -42,7 +39,7 @@ static inline IEnumPinsImpl *impl_from_IEnumPins(IEnumPins *iface)
 
 static const struct IEnumPinsVtbl IEnumPinsImpl_Vtbl;
 
-HRESULT WINAPI EnumPins_Construct(BaseFilter *base,  BaseFilter_GetPin receive_pin, BaseFilter_GetPinCount receive_pincount, BaseFilter_GetPinVersion receive_version, IEnumPins ** ppEnum)
+HRESULT enum_pins_create(BaseFilter *base, IEnumPins **ppEnum)
 {
     IEnumPinsImpl * pEnumPins;
 
@@ -58,13 +55,10 @@ HRESULT WINAPI EnumPins_Construct(BaseFilter *base,  BaseFilter_GetPin receive_p
     pEnumPins->IEnumPins_iface.lpVtbl = &IEnumPinsImpl_Vtbl;
     pEnumPins->refCount = 1;
     pEnumPins->uIndex = 0;
-    pEnumPins->receive_pin = receive_pin;
-    pEnumPins->receive_pincount = receive_pincount;
-    pEnumPins->receive_version = receive_version;
     pEnumPins->base = base;
     IBaseFilter_AddRef(&base->IBaseFilter_iface);
     *ppEnum = &pEnumPins->IEnumPins_iface;
-    pEnumPins->Version = receive_version(base);
+    pEnumPins->Version = base->pin_version;
 
     TRACE("Created new enumerator (%p)\n", *ppEnum);
     return S_OK;
@@ -134,13 +128,13 @@ static HRESULT WINAPI IEnumPinsImpl_Next(IEnumPins * iface, ULONG cPins, IPin **
     if (pcFetched)
         *pcFetched = 0;
 
-    if (This->Version != This->receive_version(This->base))
+    if (This->Version != This->base->pin_version)
         return VFW_E_ENUM_OUT_OF_SYNC;
 
     while (i < cPins)
     {
        IPin *pin;
-       pin = This->receive_pin(This->base, This->uIndex + i);
+       pin = This->base->pFuncsTable->pfnGetPin(This->base, This->uIndex + i);
 
        if (!pin)
          break;
@@ -164,39 +158,38 @@ static HRESULT WINAPI IEnumPinsImpl_Skip(IEnumPins *iface, ULONG count)
 
     TRACE("enum_pins %p, count %u.\n", enum_pins, count);
 
-    if (enum_pins->Version != enum_pins->receive_version(enum_pins->base))
+    if (enum_pins->Version != enum_pins->base->pin_version)
         return VFW_E_ENUM_OUT_OF_SYNC;
 
-    if (enum_pins->uIndex + count > enum_pins->receive_pincount(enum_pins->base))
+    if (enum_pins->uIndex + count > enum_pins->base->pFuncsTable->pfnGetPinCount(enum_pins->base))
         return S_FALSE;
 
     enum_pins->uIndex += count;
     return S_OK;
 }
 
-static HRESULT WINAPI IEnumPinsImpl_Reset(IEnumPins * iface)
+static HRESULT WINAPI IEnumPinsImpl_Reset(IEnumPins *iface)
 {
-    IEnumPinsImpl *This = impl_from_IEnumPins(iface);
+    IEnumPinsImpl *enum_pins = impl_from_IEnumPins(iface);
 
-    TRACE("(%p)->()\n", iface);
+    TRACE("iface %p.\n", iface);
 
-    This->Version = This->receive_version(This->base);
+    enum_pins->Version = enum_pins->base->pin_version;
+    enum_pins->uIndex = 0;
 
-    This->uIndex = 0;
     return S_OK;
 }
 
-static HRESULT WINAPI IEnumPinsImpl_Clone(IEnumPins * iface, IEnumPins ** ppEnum)
+static HRESULT WINAPI IEnumPinsImpl_Clone(IEnumPins *iface, IEnumPins **out)
 {
+    IEnumPinsImpl *enum_pins = impl_from_IEnumPins(iface);
     HRESULT hr;
-    IEnumPinsImpl *This = impl_from_IEnumPins(iface);
 
-    TRACE("(%p)->(%p)\n", iface, ppEnum);
+    TRACE("iface %p, out %p.\n", iface, out);
 
-    hr = EnumPins_Construct(This->base, This->receive_pin, This->receive_pincount, This->receive_version, ppEnum);
-    if (FAILED(hr))
+    if (FAILED(hr = enum_pins_create(enum_pins->base, out)))
         return hr;
-    return IEnumPins_Skip(*ppEnum, This->uIndex);
+    return IEnumPins_Skip(*out, enum_pins->uIndex);
 }
 
 static const IEnumPinsVtbl IEnumPinsImpl_Vtbl =
diff --git a/dlls/strmbase/filter.c b/dlls/strmbase/filter.c
index 50340cd9b5..ed0039f2ea 100644
--- a/dlls/strmbase/filter.c
+++ b/dlls/strmbase/filter.c
@@ -125,13 +125,13 @@ HRESULT WINAPI BaseFilterImpl_GetSyncSource(IBaseFilter * iface, IReferenceClock
     return S_OK;
 }
 
-HRESULT WINAPI BaseFilterImpl_EnumPins(IBaseFilter * iface, IEnumPins **ppEnum)
+HRESULT WINAPI BaseFilterImpl_EnumPins(IBaseFilter *iface, IEnumPins **enum_pins)
 {
-    BaseFilter *This = impl_from_IBaseFilter(iface);
+    BaseFilter *filter = impl_from_IBaseFilter(iface);
 
-    TRACE("(%p)->(%p)\n", iface, ppEnum);
+    TRACE("iface %p, enum_pins %p.\n", iface, enum_pins);
 
-    return EnumPins_Construct(This, This->pFuncsTable->pfnGetPin, This->pFuncsTable->pfnGetPinCount, BaseFilterImpl_GetPinVersion, ppEnum);
+    return enum_pins_create(filter, enum_pins);
 }
 
 HRESULT WINAPI BaseFilterImpl_FindPin(IBaseFilter *iface, const WCHAR *id, IPin **ret)
@@ -206,16 +206,9 @@ HRESULT WINAPI BaseFilterImpl_QueryVendorInfo(IBaseFilter * iface, LPWSTR *pVend
     return E_NOTIMPL;
 }
 
-LONG WINAPI BaseFilterImpl_GetPinVersion(BaseFilter * This)
-{
-    TRACE("(%p)\n", This);
-    return This->pinVersion;
-}
-
-VOID WINAPI BaseFilterImpl_IncrementPinVersion(BaseFilter * This)
+VOID WINAPI BaseFilterImpl_IncrementPinVersion(BaseFilter *filter)
 {
-    InterlockedIncrement(&This->pinVersion);
-    TRACE("(%p) -> New pinVersion %i\n", This,This->pinVersion);
+    InterlockedIncrement(&filter->pin_version);
 }
 
 HRESULT WINAPI BaseFilter_Init(BaseFilter * This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable* pBaseFuncsTable)
@@ -229,7 +222,7 @@ HRESULT WINAPI BaseFilter_Init(BaseFilter * This, const IBaseFilterVtbl *Vtbl, c
     ZeroMemory(&This->filterInfo, sizeof(FILTER_INFO));
     This->clsid = *pClsid;
     This->csFilter.DebugInfo->Spare[0] = DebugInfo;
-    This->pinVersion = 1;
+    This->pin_version = 1;
 
     This->pFuncsTable = pBaseFuncsTable;
 
diff --git a/dlls/strmbase/strmbase_private.h b/dlls/strmbase/strmbase_private.h
index f3367f88c5..de13a530c6 100644
--- a/dlls/strmbase/strmbase_private.h
+++ b/dlls/strmbase/strmbase_private.h
@@ -63,9 +63,7 @@ void QualityControlRender_DoQOS(QualityControlImpl *priv);
 void QualityControlRender_BeginRender(QualityControlImpl *This);
 void QualityControlRender_EndRender(QualityControlImpl *This);
 
-HRESULT WINAPI EnumPins_Construct(BaseFilter *base, BaseFilter_GetPin pfn_get_pin,
-        BaseFilter_GetPinCount pfn_get_pin_count, BaseFilter_GetPinVersion pfn_get_pin_version,
-        IEnumPins **enum_pins);
+HRESULT enum_pins_create(BaseFilter *base, IEnumPins **enum_pins);
 
 HRESULT WINAPI RendererPosPassThru_RegisterMediaTime(IUnknown *iface, REFERENCE_TIME start);
 HRESULT WINAPI RendererPosPassThru_ResetMediaTime(IUnknown *iface);
diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h
index 120642c101..477f162120 100644
--- a/include/wine/strmbase.h
+++ b/include/wine/strmbase.h
@@ -163,14 +163,13 @@ typedef struct BaseFilter
 	IReferenceClock * pClock;
 	FILTER_INFO filterInfo;
 	CLSID clsid;
-	LONG pinVersion;
+        LONG pin_version;
 
 	const struct BaseFilterFuncTable* pFuncsTable;
 } BaseFilter;
 
 typedef IPin* (WINAPI *BaseFilter_GetPin)(BaseFilter* iface, int iPosition);
 typedef LONG (WINAPI *BaseFilter_GetPinCount)(BaseFilter* iface);
-typedef LONG (WINAPI *BaseFilter_GetPinVersion)(BaseFilter* iface);
 
 typedef struct BaseFilterFuncTable {
 	/* Required */
@@ -191,7 +190,6 @@ HRESULT WINAPI BaseFilterImpl_QueryFilterInfo(IBaseFilter * iface, FILTER_INFO *
 HRESULT WINAPI BaseFilterImpl_JoinFilterGraph(IBaseFilter * iface, IFilterGraph *pGraph, LPCWSTR pName );
 HRESULT WINAPI BaseFilterImpl_QueryVendorInfo(IBaseFilter * iface, LPWSTR *pVendorInfo);
 
-LONG WINAPI BaseFilterImpl_GetPinVersion(BaseFilter* This);
 VOID WINAPI BaseFilterImpl_IncrementPinVersion(BaseFilter* This);
 
 HRESULT WINAPI BaseFilter_Init(BaseFilter * This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable* pBaseFuncsTable);
-- 
2.21.0




More information about the wine-devel mailing list