dplayx: Merge the IDirectPlay4_GetPlayerData helper.
This commit is contained in:
parent
a784e23917
commit
0dd3f041f4
|
@ -89,9 +89,6 @@ static HRESULT DP_IF_DestroyPlayer
|
||||||
static HRESULT DP_IF_GetGroupName
|
static HRESULT DP_IF_GetGroupName
|
||||||
( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
|
( IDirectPlay2Impl* This, DPID idGroup, LPVOID lpData,
|
||||||
LPDWORD lpdwDataSize, BOOL bAnsi );
|
LPDWORD lpdwDataSize, BOOL bAnsi );
|
||||||
static HRESULT DP_IF_GetPlayerData
|
|
||||||
( IDirectPlay2Impl* This, DPID idPlayer, LPVOID lpData,
|
|
||||||
LPDWORD lpdwDataSize, DWORD dwFlags, BOOL bAnsi );
|
|
||||||
static HRESULT DP_IF_GetPlayerName
|
static HRESULT DP_IF_GetPlayerName
|
||||||
( IDirectPlay2Impl* This, DPID idPlayer, LPVOID lpData,
|
( IDirectPlay2Impl* This, DPID idPlayer, LPVOID lpData,
|
||||||
LPDWORD lpdwDataSize, BOOL bAnsi );
|
LPDWORD lpdwDataSize, BOOL bAnsi );
|
||||||
|
@ -2249,68 +2246,50 @@ static HRESULT WINAPI IDirectPlay4Impl_GetPlayerCaps( IDirectPlay4 *iface, DPID
|
||||||
return (*This->dp2->spData.lpCB->GetCaps)( &data );
|
return (*This->dp2->spData.lpCB->GetCaps)( &data );
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT DP_IF_GetPlayerData
|
static HRESULT WINAPI IDirectPlay4AImpl_GetPlayerData( IDirectPlay4A *iface, DPID player,
|
||||||
( IDirectPlay2Impl* This, DPID idPlayer, LPVOID lpData,
|
void *data, DWORD *size, DWORD flags )
|
||||||
LPDWORD lpdwDataSize, DWORD dwFlags, BOOL bAnsi )
|
|
||||||
{
|
{
|
||||||
lpPlayerList lpPList;
|
IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface );
|
||||||
DWORD dwRequiredBufferSize;
|
return IDirectPlayX_GetPlayerData( &This->IDirectPlay4_iface, player, data, size, flags );
|
||||||
LPVOID lpCopyDataFrom;
|
|
||||||
|
|
||||||
TRACE( "(%p)->(0x%08x,%p,%p,0x%08x,%u)\n",
|
|
||||||
This, idPlayer, lpData, lpdwDataSize, dwFlags, bAnsi );
|
|
||||||
|
|
||||||
if( This->dp2->connectionInitialized == NO_PROVIDER )
|
|
||||||
{
|
|
||||||
return DPERR_UNINITIALIZED;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ( lpPList = DP_FindPlayer( This, idPlayer ) ) == NULL )
|
|
||||||
{
|
|
||||||
return DPERR_INVALIDPLAYER;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* How much buffer is required? */
|
|
||||||
if( dwFlags & DPSET_LOCAL )
|
|
||||||
{
|
|
||||||
dwRequiredBufferSize = lpPList->lpPData->dwLocalDataSize;
|
|
||||||
lpCopyDataFrom = lpPList->lpPData->lpLocalData;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dwRequiredBufferSize = lpPList->lpPData->dwRemoteDataSize;
|
|
||||||
lpCopyDataFrom = lpPList->lpPData->lpRemoteData;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Is the user requesting to know how big a buffer is required? */
|
|
||||||
if( ( lpData == NULL ) ||
|
|
||||||
( *lpdwDataSize < dwRequiredBufferSize )
|
|
||||||
)
|
|
||||||
{
|
|
||||||
*lpdwDataSize = dwRequiredBufferSize;
|
|
||||||
return DPERR_BUFFERTOOSMALL;
|
|
||||||
}
|
|
||||||
|
|
||||||
CopyMemory( lpData, lpCopyDataFrom, dwRequiredBufferSize );
|
|
||||||
|
|
||||||
return DP_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI IDirectPlay4AImpl_GetPlayerData( IDirectPlay4A *iface, DPID idPlayer,
|
static HRESULT WINAPI IDirectPlay4Impl_GetPlayerData( IDirectPlay4 *iface, DPID player,
|
||||||
void *lpData, DWORD *lpdwDataSize, DWORD dwFlags )
|
void *data, DWORD *size, DWORD flags )
|
||||||
{
|
{
|
||||||
IDirectPlayImpl *This = impl_from_IDirectPlay4A( iface );
|
IDirectPlayImpl *This = impl_from_IDirectPlay4( iface );
|
||||||
return DP_IF_GetPlayerData( This, idPlayer, lpData, lpdwDataSize,
|
lpPlayerList plist;
|
||||||
dwFlags, TRUE );
|
DWORD bufsize;
|
||||||
}
|
void *src;
|
||||||
|
|
||||||
static HRESULT WINAPI DirectPlay2WImpl_GetPlayerData
|
TRACE( "(%p)->(0x%08x,%p,%p,0x%08x)\n", This, player, data, size, flags );
|
||||||
( LPDIRECTPLAY2 iface, DPID idPlayer, LPVOID lpData,
|
|
||||||
LPDWORD lpdwDataSize, DWORD dwFlags )
|
if ( This->dp2->connectionInitialized == NO_PROVIDER )
|
||||||
{
|
return DPERR_UNINITIALIZED;
|
||||||
IDirectPlay2Impl *This = (IDirectPlay2Impl *)iface;
|
|
||||||
return DP_IF_GetPlayerData( This, idPlayer, lpData, lpdwDataSize,
|
if ( ( plist = DP_FindPlayer( This, player ) ) == NULL )
|
||||||
dwFlags, FALSE );
|
return DPERR_INVALIDPLAYER;
|
||||||
|
|
||||||
|
if ( flags & DPSET_LOCAL )
|
||||||
|
{
|
||||||
|
bufsize = plist->lpPData->dwLocalDataSize;
|
||||||
|
src = plist->lpPData->lpLocalData;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bufsize = plist->lpPData->dwRemoteDataSize;
|
||||||
|
src = plist->lpPData->lpRemoteData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Is the user requesting to know how big a buffer is required? */
|
||||||
|
if ( !data || *size < bufsize )
|
||||||
|
{
|
||||||
|
*size = bufsize;
|
||||||
|
return DPERR_BUFFERTOOSMALL;
|
||||||
|
}
|
||||||
|
|
||||||
|
CopyMemory( data, src, bufsize );
|
||||||
|
|
||||||
|
return DP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT DP_IF_GetPlayerName
|
static HRESULT DP_IF_GetPlayerName
|
||||||
|
@ -4489,7 +4468,7 @@ static const IDirectPlay4Vtbl dp4_vt =
|
||||||
IDirectPlay4Impl_GetMessageCount,
|
IDirectPlay4Impl_GetMessageCount,
|
||||||
IDirectPlay4Impl_GetPlayerAddress,
|
IDirectPlay4Impl_GetPlayerAddress,
|
||||||
IDirectPlay4Impl_GetPlayerCaps,
|
IDirectPlay4Impl_GetPlayerCaps,
|
||||||
XCAST(GetPlayerData)DirectPlay2WImpl_GetPlayerData,
|
IDirectPlay4Impl_GetPlayerData,
|
||||||
XCAST(GetPlayerName)DirectPlay2WImpl_GetPlayerName,
|
XCAST(GetPlayerName)DirectPlay2WImpl_GetPlayerName,
|
||||||
XCAST(GetSessionDesc)DirectPlay2WImpl_GetSessionDesc,
|
XCAST(GetSessionDesc)DirectPlay2WImpl_GetSessionDesc,
|
||||||
IDirectPlay4Impl_Initialize,
|
IDirectPlay4Impl_Initialize,
|
||||||
|
|
Loading…
Reference in New Issue