mirror of
https://gitlab.winehq.org/wine/wine.git
synced 2024-11-19 17:06:04 -07:00
dplayx: Respect enumeration flags in EnumGroups().
This commit is contained in:
parent
30c7900c40
commit
924a8e0d69
Notes:
Alexandre Julliard
2024-11-19 23:21:50 +01:00
Approved-by: Alistair Leslie-Hughes (@alesliehughes) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/wine/merge_requests/6844
2 changed files with 18 additions and 16 deletions
|
@ -4953,19 +4953,22 @@ static HRESULT DP_IF_EnumGroupsInGroup( IDirectPlayImpl *This, DPID group, GUID
|
||||||
if ( ( gdata = DP_FindAnyGroup(This, group ) ) == NULL )
|
if ( ( gdata = DP_FindAnyGroup(This, group ) ) == NULL )
|
||||||
return DPERR_INVALIDGROUP;
|
return DPERR_INVALIDGROUP;
|
||||||
|
|
||||||
if ( DPQ_IS_EMPTY( gdata->groups ) )
|
for( glist = DPQ_FIRST( gdata->groups ); glist; glist = DPQ_NEXT( glist->groups ) )
|
||||||
return DP_OK;
|
|
||||||
|
|
||||||
|
|
||||||
for( glist = DPQ_FIRST( gdata->groups ); ; glist = DPQ_NEXT( glist->groups ) )
|
|
||||||
{
|
{
|
||||||
/* FIXME: Should check flags for match here */
|
DWORD groupFlags;
|
||||||
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 ) )
|
if ( (glist->lpGData->dwFlags & flags) != (flags & ~DPENUMGROUPS_REMOTE) )
|
||||||
break;
|
continue;
|
||||||
|
if ( (glist->lpGData->dwFlags & DPENUMGROUPS_LOCAL) && (flags & DPENUMGROUPS_REMOTE) )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
groupFlags = glist->lpGData->dwFlags;
|
||||||
|
groupFlags &= ~(DPENUMGROUPS_LOCAL | DPLAYI_GROUP_DPLAYOWNS);
|
||||||
|
groupFlags |= flags;
|
||||||
|
|
||||||
|
if ( !(*enumplayercb)( glist->lpGData->dpid, DPPLAYERTYPE_GROUP,
|
||||||
|
ansi ? glist->lpGData->nameA : glist->lpGData->name, groupFlags, context ) )
|
||||||
|
return DP_OK; /* User requested break */
|
||||||
}
|
}
|
||||||
|
|
||||||
return DP_OK;
|
return DP_OK;
|
||||||
|
|
|
@ -2830,7 +2830,7 @@ static BOOL CALLBACK checkPlayerListCallback( DPID dpid, DWORD playerType, const
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
if ( player->actualCount )
|
if ( player->actualCount )
|
||||||
todo_wine ok_( __FILE__, data->line )( 0, "duplicate player dpid %#lx.\n", dpid );
|
ok_( __FILE__, data->line )( 0, "duplicate player dpid %#lx.\n", dpid );
|
||||||
ok_( __FILE__, data->line )( playerType == player->expectedPlayerType, "got player type %lu.\n",
|
ok_( __FILE__, data->line )( playerType == player->expectedPlayerType, "got player type %lu.\n",
|
||||||
playerType );
|
playerType );
|
||||||
if ( player->expectedShortName )
|
if ( player->expectedShortName )
|
||||||
|
@ -2853,8 +2853,7 @@ static BOOL CALLBACK checkPlayerListCallback( DPID dpid, DWORD playerType, const
|
||||||
ok_( __FILE__, data->line )( !name->lpszLongNameA, "got long name %s.\n",
|
ok_( __FILE__, data->line )( !name->lpszLongNameA, "got long name %s.\n",
|
||||||
wine_dbgstr_a( name->lpszLongNameA ) );
|
wine_dbgstr_a( name->lpszLongNameA ) );
|
||||||
}
|
}
|
||||||
todo_wine_if( playerType == DPPLAYERTYPE_GROUP && flags == DPENUMPLAYERS_LOCAL )
|
ok_( __FILE__, data->line )( flags == player->expectedFlags, "got flags %#lx.\n", flags );
|
||||||
ok_( __FILE__, data->line )( flags == player->expectedFlags, "got flags %#lx.\n", flags );
|
|
||||||
|
|
||||||
memset( &playerData, 0xcc, sizeof( playerData ) );
|
memset( &playerData, 0xcc, sizeof( playerData ) );
|
||||||
playerDataSize = sizeof( playerData );
|
playerDataSize = sizeof( playerData );
|
||||||
|
@ -2993,8 +2992,8 @@ static void checkGroupList_( int line, IDirectPlay4 *dp, ExpectedPlayer *expecte
|
||||||
hr = IDirectPlayX_EnumGroups( dp, NULL, checkPlayerListCallback, &data, DPENUMGROUPS_REMOTE );
|
hr = IDirectPlayX_EnumGroups( dp, NULL, checkPlayerListCallback, &data, DPENUMGROUPS_REMOTE );
|
||||||
ok_( __FILE__, line )( hr == DP_OK, "EnumGroups() returned %#lx.\n", hr );
|
ok_( __FILE__, line )( hr == DP_OK, "EnumGroups() returned %#lx.\n", hr );
|
||||||
|
|
||||||
todo_wine ok_( __FILE__, line )( data.actualPlayerCount == data.expectedPlayerCount, "got group count %d.\n",
|
ok_( __FILE__, line )( data.actualPlayerCount == data.expectedPlayerCount, "got group count %d.\n",
|
||||||
data.actualPlayerCount );
|
data.actualPlayerCount );
|
||||||
}
|
}
|
||||||
|
|
||||||
#define checkPlayerExists( dp, expectedDpid, expectedPlayerType, expectedShortName, expectedLongName, expectedFlags, \
|
#define checkPlayerExists( dp, expectedDpid, expectedPlayerType, expectedShortName, expectedLongName, expectedFlags, \
|
||||||
|
|
Loading…
Reference in a new issue