Module: wine Branch: master Commit: 4ccd8720d516302dca204fe9a46bf0f8f5292e01 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4ccd8720d516302dca204fe9a4...
Author: Michael Stefaniuc mstefani@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,