dplayx: Remove the duplicated IDirectPlayXImpl structs.

This commit is contained in:
Michael Stefaniuc 2013-03-29 16:39:26 +01:00 committed by Alexandre Julliard
parent 0e7b1a46d5
commit 82b51258ea
2 changed files with 17 additions and 54 deletions

View File

@ -396,46 +396,26 @@ static BOOL DP_DestroyDirectPlay2( LPVOID lpDP )
HRESULT DP_CreateInterface HRESULT DP_CreateInterface
( REFIID riid, LPVOID* ppvObj ) ( REFIID riid, LPVOID* ppvObj )
{ {
IDirectPlayImpl *This;
TRACE( " for %s\n", debugstr_guid( riid ) ); TRACE( " for %s\n", debugstr_guid( riid ) );
*ppvObj = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, This = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof( IDirectPlayImpl ) );
sizeof( IDirectPlay2Impl ) ); if( !This )
if( *ppvObj == NULL )
{
return DPERR_OUTOFMEMORY; return DPERR_OUTOFMEMORY;
}
if( IsEqualGUID( &IID_IDirectPlay2, riid ) ) if( IsEqualGUID( &IID_IDirectPlay2, riid ) )
{
IDirectPlay2Impl *This = *ppvObj;
This->lpVtbl = &directPlay2WVT; This->lpVtbl = &directPlay2WVT;
}
else if( IsEqualGUID( &IID_IUnknown, riid ) || IsEqualGUID( &IID_IDirectPlay2A, riid ) ) else if( IsEqualGUID( &IID_IUnknown, riid ) || IsEqualGUID( &IID_IDirectPlay2A, riid ) )
{
IDirectPlay2AImpl *This = *ppvObj;
This->lpVtbl = &directPlay2AVT; This->lpVtbl = &directPlay2AVT;
}
else if( IsEqualGUID( &IID_IDirectPlay3, riid ) ) else if( IsEqualGUID( &IID_IDirectPlay3, riid ) )
{
IDirectPlay3Impl *This = *ppvObj;
This->lpVtbl = &directPlay3WVT; This->lpVtbl = &directPlay3WVT;
}
else if( IsEqualGUID( &IID_IDirectPlay3A, riid ) ) else if( IsEqualGUID( &IID_IDirectPlay3A, riid ) )
{
IDirectPlay3AImpl *This = *ppvObj;
This->lpVtbl = &directPlay3AVT; This->lpVtbl = &directPlay3AVT;
}
else if( IsEqualGUID( &IID_IDirectPlay4, riid ) ) else if( IsEqualGUID( &IID_IDirectPlay4, riid ) )
{
IDirectPlay4Impl *This = *ppvObj;
This->lpVtbl = &directPlay4WVT; This->lpVtbl = &directPlay4WVT;
}
else if( IsEqualGUID( &IID_IDirectPlay4A, riid ) ) else if( IsEqualGUID( &IID_IDirectPlay4A, riid ) )
{
IDirectPlay4AImpl *This = *ppvObj;
This->lpVtbl = &directPlay4AVT; This->lpVtbl = &directPlay4AVT;
}
else else
{ {
/* Unsupported interface */ /* Unsupported interface */
@ -446,6 +426,7 @@ HRESULT DP_CreateInterface
} }
/* Initialize it */ /* Initialize it */
*ppvObj = This;
if ( DP_CreateIUnknown( *ppvObj ) && DP_CreateDirectPlay2( *ppvObj ) ) if ( DP_CreateIUnknown( *ppvObj ) && DP_CreateDirectPlay2( *ppvObj ) )
{ {
IDirectPlayX_AddRef( (LPDIRECTPLAY2A)*ppvObj ); IDirectPlayX_AddRef( (LPDIRECTPLAY2A)*ppvObj );

View File

@ -31,16 +31,6 @@ extern HRESULT DPL_EnumAddress( LPDPENUMADDRESSCALLBACK lpEnumAddressCallback,
LPCVOID lpAddress, DWORD dwAddressSize, LPCVOID lpAddress, DWORD dwAddressSize,
LPVOID lpContext ) DECLSPEC_HIDDEN; LPVOID lpContext ) DECLSPEC_HIDDEN;
/*****************************************************************************
* Predeclare the interface implementation structures
*/
typedef struct IDirectPlay2Impl IDirectPlay2AImpl;
typedef struct IDirectPlay2Impl IDirectPlay2Impl;
typedef struct IDirectPlay3Impl IDirectPlay3AImpl;
typedef struct IDirectPlay3Impl IDirectPlay3Impl;
typedef struct IDirectPlay4Impl IDirectPlay4AImpl;
typedef struct IDirectPlay4Impl IDirectPlay4Impl;
typedef struct tagDirectPlayIUnknownData typedef struct tagDirectPlayIUnknownData
{ {
LONG ulObjRef; LONG ulObjRef;
@ -196,28 +186,20 @@ typedef struct tagDirectPlay2Data
DPQ_HEAD( tagDP_MSG_REPLY_STRUCT_LIST ) repliesExpected; DPQ_HEAD( tagDP_MSG_REPLY_STRUCT_LIST ) repliesExpected;
} DirectPlay2Data; } DirectPlay2Data;
#define DP_IMPL_FIELDS \ typedef struct IDirectPlayImpl
LONG ulInterfaceRef; \
DirectPlayIUnknownData* unk; \
DirectPlay2Data* dp2;
struct IDirectPlay2Impl
{ {
const IDirectPlay2Vtbl *lpVtbl; const void *lpVtbl;
DP_IMPL_FIELDS LONG ulInterfaceRef;
}; DirectPlayIUnknownData *unk;
DirectPlay2Data *dp2;
} IDirectPlayImpl;
struct IDirectPlay3Impl typedef struct IDirectPlayImpl IDirectPlay2Impl;
{ typedef struct IDirectPlayImpl IDirectPlay2AImpl;
const IDirectPlay3Vtbl *lpVtbl; typedef struct IDirectPlayImpl IDirectPlay3Impl;
DP_IMPL_FIELDS typedef struct IDirectPlayImpl IDirectPlay3AImpl;
}; typedef struct IDirectPlayImpl IDirectPlay4Impl;
typedef struct IDirectPlayImpl IDirectPlay4AImpl;
struct IDirectPlay4Impl
{
const IDirectPlay4Vtbl *lpVtbl;
DP_IMPL_FIELDS
};
HRESULT DP_HandleMessage( IDirectPlay2Impl* This, LPCVOID lpMessageBody, HRESULT DP_HandleMessage( IDirectPlay2Impl* This, LPCVOID lpMessageBody,
DWORD dwMessageBodySize, LPCVOID lpMessageHeader, DWORD dwMessageBodySize, LPCVOID lpMessageHeader,