[PATCH 1/5] strmbase: Simplify copying PIN_INFO.

Zebediah Figura z.figura12 at gmail.com
Tue Jul 3 16:56:49 CDT 2018


It is unlikely that using strcpy() instead of memcpy() amounts to an
optimization.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/strmbase/pin.c | 27 ++++++++-------------------
 1 file changed, 8 insertions(+), 19 deletions(-)

diff --git a/dlls/strmbase/pin.c b/dlls/strmbase/pin.c
index ef22a57..f3ce7d0 100644
--- a/dlls/strmbase/pin.c
+++ b/dlls/strmbase/pin.c
@@ -143,17 +143,6 @@ out:
     return hr;
 }
 
-static void Copy_PinInfo(PIN_INFO * pDest, const PIN_INFO * pSrc)
-{
-    /* Tempting to just do a memcpy, but the name field is
-       128 characters long! We will probably never exceed 10
-       most of the time, so we are better off copying
-       each field manually */
-    strcpyW(pDest->achName, pSrc->achName);
-    pDest->dir = pSrc->dir;
-    pDest->pFilter = pSrc->pFilter;
-}
-
 static void dump_AM_MEDIA_TYPE(const AM_MEDIA_TYPE * pmt)
 {
     if (!pmt)
@@ -270,14 +259,14 @@ HRESULT WINAPI BasePinImpl_ConnectionMediaType(IPin * iface, AM_MEDIA_TYPE * pmt
     return hr;
 }
 
-HRESULT WINAPI BasePinImpl_QueryPinInfo(IPin * iface, PIN_INFO * pInfo)
+HRESULT WINAPI BasePinImpl_QueryPinInfo(IPin *iface, PIN_INFO *info)
 {
     BasePin *This = impl_from_IPin(iface);
 
-    TRACE("(%p)->(%p)\n", This, pInfo);
+    TRACE("(%p)->(%p)\n", This, info);
 
-    Copy_PinInfo(pInfo, &This->pinInfo);
-    IBaseFilter_AddRef(pInfo->pFilter);
+    memcpy(info, &This->pinInfo, sizeof(*info));
+    IBaseFilter_AddRef(info->pFilter);
 
     return S_OK;
 }
@@ -766,7 +755,7 @@ HRESULT WINAPI BaseOutputPinImpl_AttemptConnection(BasePin* iface, IPin * pRecei
     return hr;
 }
 
-static HRESULT OutputPin_Init(const IPinVtbl *OutputPin_Vtbl, const PIN_INFO * pPinInfo, const BaseOutputPinFuncTable* vtbl,  LPCRITICAL_SECTION pCritSec, BaseOutputPin * pPinImpl)
+static HRESULT OutputPin_Init(const IPinVtbl *OutputPin_Vtbl, const PIN_INFO *info, const BaseOutputPinFuncTable *vtbl,  LPCRITICAL_SECTION pCritSec, BaseOutputPin *pPinImpl)
 {
     TRACE("(%p)\n", pPinImpl);
 
@@ -778,7 +767,7 @@ static HRESULT OutputPin_Init(const IPinVtbl *OutputPin_Vtbl, const PIN_INFO * p
     pPinImpl->pin.tStart = 0;
     pPinImpl->pin.tStop = 0;
     pPinImpl->pin.dRate = 1.0;
-    Copy_PinInfo(&pPinImpl->pin.pinInfo, pPinInfo);
+    memcpy(&pPinImpl->pin.pinInfo, info, sizeof(*info));
     pPinImpl->pin.pFuncsTable = &vtbl->base;
     ZeroMemory(&pPinImpl->pin.mtCurrent, sizeof(AM_MEDIA_TYPE));
 
@@ -1149,7 +1138,7 @@ static const IMemInputPinVtbl MemInputPin_Vtbl =
     MemInputPin_ReceiveCanBlock
 };
 
-static HRESULT InputPin_Init(const IPinVtbl *InputPin_Vtbl, const PIN_INFO * pPinInfo,
+static HRESULT InputPin_Init(const IPinVtbl *InputPin_Vtbl, const PIN_INFO *info,
                              const BaseInputPinFuncTable* vtbl,
                              LPCRITICAL_SECTION pCritSec, IMemAllocator *allocator, BaseInputPin * pPinImpl)
 {
@@ -1162,7 +1151,7 @@ static HRESULT InputPin_Init(const IPinVtbl *InputPin_Vtbl, const PIN_INFO * pPi
     pPinImpl->pin.tStart = 0;
     pPinImpl->pin.tStop = 0;
     pPinImpl->pin.dRate = 1.0;
-    Copy_PinInfo(&pPinImpl->pin.pinInfo, pPinInfo);
+    memcpy(&pPinImpl->pin.pinInfo, info, sizeof(*info));
     ZeroMemory(&pPinImpl->pin.mtCurrent, sizeof(AM_MEDIA_TYPE));
     pPinImpl->pin.pFuncsTable = &vtbl->base;
 
-- 
2.7.4




More information about the wine-devel mailing list