Michael Stefaniuc : dplayx: Merge the IDirectPlay4_GetGroupData helper.

Alexandre Julliard julliard at winehq.org
Tue Apr 2 13:38:35 CDT 2013


Module: wine
Branch: master
Commit: 4ccd8720d516302dca204fe9a46bf0f8f5292e01
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4ccd8720d516302dca204fe9a46bf0f8f5292e01

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Fri Mar 29 16:54:00 2013 +0100

dplayx: Merge the IDirectPlay4_GetGroupData helper.

---

 dlls/dplayx/dplay.c |   88 ++++++++++++++++++++------------------------------
 1 files changed, 35 insertions(+), 53 deletions(-)

diff --git a/dlls/dplayx/dplay.c b/dlls/dplayx/dplay.c
index d21ac89..3bc5402 100644
--- a/dlls/dplayx/dplay.c
+++ b/dlls/dplayx/dplay.c
@@ -86,9 +86,6 @@ static HRESULT DP_IF_DestroyGroup
           ( IDirectPlay2Impl* This, LPVOID lpMsgHdr, DPID idGroup, BOOL bAnsi );
 static HRESULT DP_IF_DestroyPlayer
           ( IDirectPlay2Impl* This, LPVOID lpMsgHdr, DPID idPlayer, BOOL bAnsi );
-static HRESULT DP_IF_GetGroupData
-          ( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
-            LPDWORD lpdwDataSize, DWORD dwFlags, BOOL bAnsi );
 static HRESULT DP_IF_GetGroupName
           ( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
             LPDWORD lpdwDataSize, BOOL bAnsi );
@@ -2113,63 +2110,48 @@ static HRESULT WINAPI DirectPlay2WImpl_GetCaps
   return DP_IF_GetCaps( This, lpDPCaps, dwFlags );
 }
 
-static HRESULT DP_IF_GetGroupData
-          ( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
-            LPDWORD lpdwDataSize, DWORD dwFlags, BOOL bAnsi )
+static HRESULT WINAPI IDirectPlay4AImpl_GetGroupData( IDirectPlay4A *iface, DPID group,
+        void *data, DWORD *size, DWORD flags )
 {
-  lpGroupData lpGData;
-  DWORD dwRequiredBufferSize;
-  LPVOID lpCopyDataFrom;
-
-  TRACE( "(%p)->(0x%08x,%p,%p,0x%08x,%u)\n",
-         This, idGroup, lpData, lpdwDataSize, dwFlags, bAnsi );
+    IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface );
+    return IDirectPlayX_GetGroupData( &This->IDirectPlay4_iface, group, data, size, flags );
+}
 
-  if( ( lpGData = DP_FindAnyGroup( This, idGroup ) ) == NULL )
-  {
-    return DPERR_INVALIDGROUP;
-  }
+static HRESULT WINAPI IDirectPlay4Impl_GetGroupData( IDirectPlay4 *iface, DPID group,
+        void *data, DWORD *size, DWORD flags )
+{
+    IDirectPlayImpl *This = impl_from_IDirectPlay4( iface );
+    lpGroupData gdata;
+    DWORD bufsize;
+    void *src;
 
-  /* How much buffer is required? */
-  if( dwFlags & DPSET_LOCAL )
-  {
-    dwRequiredBufferSize = lpGData->dwLocalDataSize;
-    lpCopyDataFrom       = lpGData->lpLocalData;
-  }
-  else
-  {
-    dwRequiredBufferSize = lpGData->dwRemoteDataSize;
-    lpCopyDataFrom       = lpGData->lpRemoteData;
-  }
+    TRACE( "(%p)->(0x%08x,%p,%p,0x%08x)\n", This, group, data, size, flags );
 
-  /* Is the user requesting to know how big a buffer is required? */
-  if( ( lpData == NULL ) ||
-      ( *lpdwDataSize < dwRequiredBufferSize )
-    )
-  {
-    *lpdwDataSize = dwRequiredBufferSize;
-    return DPERR_BUFFERTOOSMALL;
-  }
+    if ( ( gdata = DP_FindAnyGroup( This, group ) ) == NULL )
+        return DPERR_INVALIDGROUP;
 
-  CopyMemory( lpData, lpCopyDataFrom, dwRequiredBufferSize );
+    /* How much buffer is required? */
+    if ( flags & DPSET_LOCAL )
+    {
+        bufsize = gdata->dwLocalDataSize;
+        src = gdata->lpLocalData;
+    }
+    else
+    {
+        bufsize = gdata->dwRemoteDataSize;
+        src = gdata->lpRemoteData;
+    }
 
-  return DP_OK;
-}
+    /* Is the user requesting to know how big a buffer is required? */
+    if ( !data || *size < bufsize )
+    {
+        *size = bufsize;
+        return DPERR_BUFFERTOOSMALL;
+    }
 
-static HRESULT WINAPI IDirectPlay4AImpl_GetGroupData( IDirectPlay4A *iface, DPID idGroup,
-        void *lpData, DWORD *lpdwDataSize, DWORD dwFlags )
-{
-  IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface );
-  return DP_IF_GetGroupData( This, idGroup, lpData, lpdwDataSize,
-                           dwFlags, TRUE );
-}
+    CopyMemory( data, src, bufsize );
 
-static HRESULT WINAPI DirectPlay2WImpl_GetGroupData
-          ( LPDIRECTPLAY2 iface, DPID idGroup, LPVOID lpData,
-            LPDWORD lpdwDataSize, DWORD dwFlags )
-{
-  IDirectPlay2Impl *This = (IDirectPlay2Impl *)iface;
-  return DP_IF_GetGroupData( This, idGroup, lpData, lpdwDataSize,
-                           dwFlags, FALSE );
+    return DP_OK;
 }
 
 static HRESULT DP_IF_GetGroupName
@@ -4527,7 +4509,7 @@ static const IDirectPlay4Vtbl dp4_vt =
     IDirectPlay4Impl_EnumPlayers,
   XCAST(EnumSessions)DirectPlay2WImpl_EnumSessions,
   XCAST(GetCaps)DirectPlay2WImpl_GetCaps,
-  XCAST(GetGroupData)DirectPlay2WImpl_GetGroupData,
+    IDirectPlay4Impl_GetGroupData,
   XCAST(GetGroupName)DirectPlay2WImpl_GetGroupName,
     IDirectPlay4Impl_GetMessageCount,
     IDirectPlay4Impl_GetPlayerAddress,




More information about the wine-cvs mailing list