From: Anton Baskanov baskanov@gmail.com
--- dlls/dplayx/dplay.c | 61 ++++++++++++++++++++++---------------- dlls/dplayx/tests/dplayx.c | 8 ++--- 2 files changed, 40 insertions(+), 29 deletions(-)
diff --git a/dlls/dplayx/dplay.c b/dlls/dplayx/dplay.c index c1b09627f55..6b9001360ca 100644 --- a/dlls/dplayx/dplay.c +++ b/dlls/dplayx/dplay.c @@ -2259,18 +2259,9 @@ static HRESULT WINAPI IDirectPlay3Impl_EnumGroupPlayers( IDirectPlay3 *iface, DP enumplayercb, context, flags ); }
-static HRESULT WINAPI IDirectPlay4AImpl_EnumGroupPlayers( IDirectPlay4A *iface, DPID group, - GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags ) -{ - IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface ); - return IDirectPlayX_EnumGroupPlayers( &This->IDirectPlay4_iface, group, instance, enumplayercb, - context, flags ); -} - -static HRESULT WINAPI IDirectPlay4Impl_EnumGroupPlayers( IDirectPlay4 *iface, DPID group, - GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags ) +static HRESULT DP_IF_EnumGroupPlayers( IDirectPlayImpl *This, DPID group, GUID *instance, + LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags, BOOL ansi ) { - IDirectPlayImpl *This = impl_from_IDirectPlay4( iface ); lpGroupData gdata; lpPlayerList plist;
@@ -2297,7 +2288,8 @@ static HRESULT WINAPI IDirectPlay4Impl_EnumGroupPlayers( IDirectPlay4 *iface, DP { /* FIXME: Need to add stuff for flags checking */ if ( !enumplayercb( plist->lpPData->dpid, DPPLAYERTYPE_PLAYER, - plist->lpPData->name, plist->lpPData->dwFlags, context ) ) + ansi ? plist->lpPData->nameA : plist->lpPData->name, + plist->lpPData->dwFlags, context ) ) /* User requested break */ return DP_OK; } @@ -2308,6 +2300,20 @@ static HRESULT WINAPI IDirectPlay4Impl_EnumGroupPlayers( IDirectPlay4 *iface, DP return DP_OK; }
+static HRESULT WINAPI IDirectPlay4AImpl_EnumGroupPlayers( IDirectPlay4A *iface, DPID group, + GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags ) +{ + IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface ); + return DP_IF_EnumGroupPlayers( This, group, instance, enumplayercb, context, flags, TRUE ); +} + +static HRESULT WINAPI IDirectPlay4Impl_EnumGroupPlayers( IDirectPlay4 *iface, DPID group, + GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags ) +{ + IDirectPlayImpl *This = impl_from_IDirectPlay4( iface ); + return DP_IF_EnumGroupPlayers( This, group, instance, enumplayercb, context, flags, FALSE ); +} + /* NOTE: This only enumerates top level groups (created with CreateGroup) */ static HRESULT WINAPI IDirectPlay2AImpl_EnumGroups( IDirectPlay2A *iface, GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags ) @@ -4571,18 +4577,9 @@ static HRESULT WINAPI IDirectPlay3Impl_EnumGroupsInGroup( IDirectPlay3 *iface, D enumplayercb, context, flags ); }
-static HRESULT WINAPI IDirectPlay4AImpl_EnumGroupsInGroup( IDirectPlay4A *iface, DPID group, - GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags ) +static HRESULT DP_IF_EnumGroupsInGroup( IDirectPlayImpl *This, DPID group, GUID *instance, + LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags, BOOL ansi ) { - IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface ); - return IDirectPlayX_EnumGroupsInGroup( &This->IDirectPlay4_iface, group, instance, - enumplayercb, context, flags ); -} - -static HRESULT WINAPI IDirectPlay4Impl_EnumGroupsInGroup( IDirectPlay4 *iface, DPID group, - GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags ) -{ - IDirectPlayImpl *This = impl_from_IDirectPlay4( iface ); lpGroupList glist; lpGroupData gdata;
@@ -4602,8 +4599,8 @@ static HRESULT WINAPI IDirectPlay4Impl_EnumGroupsInGroup( IDirectPlay4 *iface, D for( glist = DPQ_FIRST( gdata->groups ); ; glist = DPQ_NEXT( glist->groups ) ) { /* FIXME: Should check flags for match here */ - if ( !(*enumplayercb)( glist->lpGData->dpid, DPPLAYERTYPE_GROUP, glist->lpGData->name, - flags, context ) ) + if ( !(*enumplayercb)( glist->lpGData->dpid, DPPLAYERTYPE_GROUP, + ansi ? glist->lpGData->nameA : glist->lpGData->name, flags, context ) ) return DP_OK; /* User requested break */
if ( DPQ_IS_ENDOFLIST( glist->groups ) ) @@ -4613,6 +4610,20 @@ static HRESULT WINAPI IDirectPlay4Impl_EnumGroupsInGroup( IDirectPlay4 *iface, D return DP_OK; }
+static HRESULT WINAPI IDirectPlay4AImpl_EnumGroupsInGroup( IDirectPlay4A *iface, DPID group, + GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags ) +{ + IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface ); + return DP_IF_EnumGroupsInGroup( This, group, instance, enumplayercb, context, flags, TRUE ); +} + +static HRESULT WINAPI IDirectPlay4Impl_EnumGroupsInGroup( IDirectPlay4 *iface, DPID group, + GUID *instance, LPDPENUMPLAYERSCALLBACK2 enumplayercb, void *context, DWORD flags ) +{ + IDirectPlayImpl *This = impl_from_IDirectPlay4( iface ); + return DP_IF_EnumGroupsInGroup( This, group, instance, enumplayercb, context, flags, FALSE ); +} + static HRESULT WINAPI IDirectPlay3AImpl_GetGroupConnectionSettings( IDirectPlay3A *iface, DWORD flags, DPID group, void *data, DWORD *size ) { diff --git a/dlls/dplayx/tests/dplayx.c b/dlls/dplayx/tests/dplayx.c index 3897cc8e52c..a780f93de4c 100644 --- a/dlls/dplayx/tests/dplayx.c +++ b/dlls/dplayx/tests/dplayx.c @@ -2033,8 +2033,8 @@ static BOOL CALLBACK checkPlayerListCallback( DPID dpid, DWORD playerType, const playerType ); if ( player->expectedShortName ) { - todo_wine ok_( __FILE__, data->line )( name->lpszShortNameA && !strcmp( name->lpszShortNameA, player->expectedShortName ), - "got short name %s.\n", wine_dbgstr_a( name->lpszShortNameA ) ); + ok_( __FILE__, data->line )( name->lpszShortNameA && !strcmp( name->lpszShortNameA, player->expectedShortName ), + "got short name %s.\n", wine_dbgstr_a( name->lpszShortNameA ) ); } else { @@ -2043,8 +2043,8 @@ static BOOL CALLBACK checkPlayerListCallback( DPID dpid, DWORD playerType, const } if ( player->expectedLongName ) { - todo_wine ok_( __FILE__, data->line )( name->lpszLongNameA && !strcmp( name->lpszLongNameA, player->expectedLongName ), - "got long name %s.\n", wine_dbgstr_a( name->lpszLongNameA ) ); + ok_( __FILE__, data->line )( name->lpszLongNameA && !strcmp( name->lpszLongNameA, player->expectedLongName ), + "got long name %s.\n", wine_dbgstr_a( name->lpszLongNameA ) ); } else {