Michael Stefaniuc : dplayx: Merge the IDirectPlay4_EnumGroupPlayers helper.

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


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

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

dplayx: Merge the IDirectPlay4_EnumGroupPlayers helper.

---

 dlls/dplayx/dplay.c |  122 +++++++++++++++++----------------------------------
 1 files changed, 41 insertions(+), 81 deletions(-)

diff --git a/dlls/dplayx/dplay.c b/dlls/dplayx/dplay.c
index ddbba48..d21ac89 100644
--- a/dlls/dplayx/dplay.c
+++ b/dlls/dplayx/dplay.c
@@ -86,10 +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_EnumGroupPlayers
-          ( IDirectPlay2Impl* This, DPID idGroup, LPGUID lpguidInstance,
-            LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2,
-            LPVOID lpContext, DWORD dwFlags, BOOL bAnsi );
 static HRESULT DP_IF_GetGroupData
           ( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
             LPDWORD lpdwDataSize, DWORD dwFlags, BOOL bAnsi );
@@ -1559,8 +1555,8 @@ static HRESULT DP_IF_DestroyGroup
   context.idGroup = idGroup;
 
   /* Remove all players that this group has */
-  DP_IF_EnumGroupPlayers( This, idGroup, NULL,
-                          cbRemoveGroupOrPlayer, &context, 0, bAnsi );
+  IDirectPlayX_EnumGroupPlayers( &This->IDirectPlay4_iface, idGroup, NULL, cbRemoveGroupOrPlayer,
+          &context, 0 );
 
   /* Remove all links to groups that this group has since this is dp3 */
   DP_IF_EnumGroupsInGroup( (IDirectPlay3Impl*)This, idGroup, NULL,
@@ -1713,90 +1709,54 @@ static HRESULT WINAPI DirectPlay2WImpl_DestroyPlayer
   return DP_IF_DestroyPlayer( This, NULL, idPlayer, FALSE );
 }
 
-static HRESULT DP_IF_EnumGroupPlayers
-          ( IDirectPlay2Impl* This, DPID idGroup, LPGUID lpguidInstance,
-            LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2,
-            LPVOID lpContext, DWORD dwFlags, BOOL bAnsi )
+static HRESULT WINAPI IDirectPlay4AImpl_EnumGroupPlayers( IDirectPlay4A *iface, DPID group,
+        GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags )
 {
-  lpGroupData  lpGData;
-  lpPlayerList lpPList;
-
-  FIXME("(%p)->(0x%08x,%p,%p,%p,0x%08x,%u): semi stub\n",
-          This, idGroup, lpguidInstance, lpEnumPlayersCallback2,
-          lpContext, dwFlags, bAnsi );
-
-  if( This->dp2->connectionInitialized == NO_PROVIDER )
-  {
-    return DPERR_UNINITIALIZED;
-  }
-
-  /* Find the group */
-  if( ( lpGData = DP_FindAnyGroup( This, idGroup ) ) == NULL )
-  {
-    return DPERR_INVALIDGROUP;
-  }
+    IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface );
+    return IDirectPlayX_EnumGroupPlayers( &This->IDirectPlay4_iface, group, instance, enumplayercb,
+            context, flags );
+}
 
-  if( DPQ_IS_EMPTY( lpGData->players ) )
-  {
-    return DP_OK;
-  }
+static HRESULT WINAPI IDirectPlay4Impl_EnumGroupPlayers( IDirectPlay4 *iface, DPID group,
+        GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags )
+{
+    IDirectPlayImpl *This = impl_from_IDirectPlay4( iface );
+    lpGroupData  gdata;
+    lpPlayerList plist;
 
-  lpPList = DPQ_FIRST( lpGData->players );
+    FIXME( "(%p)->(0x%08x,%p,%p,%p,0x%08x): semi stub\n", This, group, instance, enumplayercb,
+           context, flags );
 
-  /* Walk the players in this group */
-  for( ;; )
-  {
-    /* We do not enum the name server or app server as they are of no
-     * consequence to the end user.
-     */
-    if( ( lpPList->lpPData->dpid != DPID_NAME_SERVER ) &&
-        ( lpPList->lpPData->dpid != DPID_SERVERPLAYER )
-      )
-    {
+    if ( This->dp2->connectionInitialized == NO_PROVIDER )
+        return DPERR_UNINITIALIZED;
 
-      /* FIXME: Need to add stuff for dwFlags checking */
+    /* Find the group */
+    if ( ( gdata = DP_FindAnyGroup( This, group ) ) == NULL )
+        return DPERR_INVALIDGROUP;
 
-      if( !lpEnumPlayersCallback2( lpPList->lpPData->dpid, DPPLAYERTYPE_PLAYER,
-                                   &lpPList->lpPData->name,
-                                   lpPList->lpPData->dwFlags,
-                                   lpContext )
-        )
-      {
-        /* User requested break */
+    if ( DPQ_IS_EMPTY( gdata->players ) )
         return DP_OK;
-      }
-    }
 
-    if( DPQ_IS_ENDOFLIST( lpPList->players ) )
+    /* Walk the players in this group */
+    for( plist = DPQ_FIRST( gdata->players ); ; plist = DPQ_NEXT( plist->players ) )
     {
-      break;
-    }
-
-    lpPList = DPQ_NEXT( lpPList->players );
-  }
-
-  return DP_OK;
-}
-
-static HRESULT WINAPI IDirectPlay4AImpl_EnumGroupPlayers( IDirectPlay4A *iface, DPID idGroup,
-        GUID *lpguidInstance, LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2,
-        void *lpContext, DWORD dwFlags )
-{
-  IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface );
-  return DP_IF_EnumGroupPlayers( This, idGroup, lpguidInstance,
-                               lpEnumPlayersCallback2, lpContext,
-                               dwFlags, TRUE );
-}
+        /* We do not enum the name server or app server as they are of no
+         * consequence to the end user.
+         */
+        if ( ( plist->lpPData->dpid != DPID_NAME_SERVER ) &&
+                ( plist->lpPData->dpid != DPID_SERVERPLAYER ) )
+        {
+            /* FIXME: Need to add stuff for flags checking */
+            if ( !enumplayercb( plist->lpPData->dpid, DPPLAYERTYPE_PLAYER,
+                        &plist->lpPData->name, plist->lpPData->dwFlags, context ) )
+              /* User requested break */
+              return DP_OK;
+        }
 
-static HRESULT WINAPI DirectPlay2WImpl_EnumGroupPlayers
-          ( LPDIRECTPLAY2 iface, DPID idGroup, LPGUID lpguidInstance,
-            LPDPENUMPLAYERSCALLBACK2 lpEnumPlayersCallback2,
-            LPVOID lpContext, DWORD dwFlags )
-{
-  IDirectPlay2Impl *This = (IDirectPlay2Impl *)iface;
-  return DP_IF_EnumGroupPlayers( This, idGroup, lpguidInstance,
-                               lpEnumPlayersCallback2, lpContext,
-                               dwFlags, FALSE );
+        if ( DPQ_IS_ENDOFLIST( plist->players ) )
+            break;
+    }
+    return DP_OK;
 }
 
 /* NOTE: This only enumerates top level groups (created with CreateGroup) */
@@ -4562,7 +4522,7 @@ static const IDirectPlay4Vtbl dp4_vt =
     IDirectPlay4Impl_DeletePlayerFromGroup,
   XCAST(DestroyGroup)DirectPlay2WImpl_DestroyGroup,
   XCAST(DestroyPlayer)DirectPlay2WImpl_DestroyPlayer,
-  XCAST(EnumGroupPlayers)DirectPlay2WImpl_EnumGroupPlayers,
+    IDirectPlay4Impl_EnumGroupPlayers,
     IDirectPlay4Impl_EnumGroups,
     IDirectPlay4Impl_EnumPlayers,
   XCAST(EnumSessions)DirectPlay2WImpl_EnumSessions,




More information about the wine-cvs mailing list