dplayx: Use separate QueryInterface, AddRef and Release methods for IDirectPlayLobby3 + 3A.

oldstable
Michael Stefaniuc 2013-04-11 23:52:18 +02:00 committed by Alexandre Julliard
parent 9f10f092f6
commit 91ae663c59
1 changed files with 52 additions and 29 deletions

View File

@ -93,6 +93,11 @@ typedef struct IDirectPlayLobbyImpl
DirectPlayLobbyData* dpl;
} IDirectPlayLobbyImpl;
static inline IDirectPlayLobbyImpl *impl_from_IDirectPlayLobby3( IDirectPlayLobby3 *iface )
{
return (IDirectPlayLobbyImpl*)iface; /* What you gonna do? */
}
static inline IDirectPlayLobbyImpl *impl_from_IDirectPlayLobby3A( IDirectPlayLobby3A *iface )
{
return (IDirectPlayLobbyImpl*)iface; /* What you gonna do? */
@ -230,12 +235,8 @@ HRESULT DPL_CreateInterface
return DPERR_NOMEMORY;
}
static HRESULT WINAPI DPL_QueryInterface
( LPDIRECTPLAYLOBBYA iface,
REFIID riid,
LPVOID* ppvObj )
static HRESULT WINAPI DPL_QueryInterface( IDirectPlayLobbyImpl *This, REFIID riid, void **ppvObj )
{
IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface;
TRACE("(%p)->(%s,%p)\n", This, debugstr_guid( riid ), ppvObj );
*ppvObj = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,
@ -279,11 +280,9 @@ static HRESULT WINAPI DPL_QueryInterface
* Simple procedure. Just increment the reference count to this
* structure and return the new reference count.
*/
static ULONG WINAPI DPL_AddRef
( LPDIRECTPLAYLOBBY iface )
static ULONG WINAPI DPL_AddRef( IDirectPlayLobbyImpl *This )
{
ULONG ulInterfaceRefCount, ulObjRefCount;
IDirectPlayLobbyWImpl *This = (IDirectPlayLobbyWImpl *)iface;
ulObjRefCount = InterlockedIncrement( &This->unk->ulObjRef );
ulInterfaceRefCount = InterlockedIncrement( &This->ulInterfaceRef );
@ -299,11 +298,9 @@ static ULONG WINAPI DPL_AddRef
* If the object no longer has any reference counts, free up the associated
* memory.
*/
static ULONG WINAPI DPL_Release
( LPDIRECTPLAYLOBBYA iface )
static ULONG WINAPI DPL_Release( IDirectPlayLobbyImpl *This )
{
ULONG ulInterfaceRefCount, ulObjRefCount;
IDirectPlayLobbyAImpl *This = (IDirectPlayLobbyAImpl *)iface;
ulObjRefCount = InterlockedDecrement( &This->unk->ulObjRef );
ulInterfaceRefCount = InterlockedDecrement( &This->ulInterfaceRef );
@ -326,6 +323,44 @@ static ULONG WINAPI DPL_Release
return ulInterfaceRefCount;
}
static HRESULT WINAPI IDirectPlayLobby3AImpl_QueryInterface( IDirectPlayLobby3A *iface, REFIID riid,
void **ppv )
{
IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface );
return DPL_QueryInterface( This, riid, ppv );
}
static HRESULT WINAPI IDirectPlayLobby3Impl_QueryInterface( IDirectPlayLobby3 *iface, REFIID riid,
void **ppv )
{
IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3( iface );
return DPL_QueryInterface( This, riid, ppv );
}
static ULONG WINAPI IDirectPlayLobby3AImpl_AddRef(IDirectPlayLobby3A *iface)
{
IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface );
return DPL_AddRef( This );
}
static ULONG WINAPI IDirectPlayLobby3Impl_AddRef(IDirectPlayLobby3 *iface)
{
IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3( iface );
return DPL_AddRef( This );
}
static ULONG WINAPI IDirectPlayLobby3AImpl_Release(IDirectPlayLobby3A *iface)
{
IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3A( iface );
return DPL_Release( This );
}
static ULONG WINAPI IDirectPlayLobby3Impl_Release(IDirectPlayLobby3 *iface)
{
IDirectPlayLobbyImpl *This = impl_from_IDirectPlayLobby3( iface );
return DPL_Release( This );
}
/********************************************************************
*
@ -1552,21 +1587,11 @@ static HRESULT WINAPI IDirectPlayLobby3AImpl_WaitForConnectionSettings
}
/* Direct Play Lobby 3 (ascii) Virtual Table for methods */
/* Note: Hack so we can reuse the old functions without compiler warnings */
#if !defined(__STRICT_ANSI__) && defined(__GNUC__)
# define XCAST(fun) (typeof(directPlayLobby3AVT.fun))
#else
# define XCAST(fun) (void*)
#endif
static const IDirectPlayLobby3Vtbl directPlayLobby3AVT =
{
XCAST(QueryInterface)DPL_QueryInterface,
XCAST(AddRef)DPL_AddRef,
XCAST(Release)DPL_Release,
IDirectPlayLobby3AImpl_QueryInterface,
IDirectPlayLobby3AImpl_AddRef,
IDirectPlayLobby3AImpl_Release,
IDirectPlayLobby3AImpl_Connect,
IDirectPlayLobby3AImpl_CreateAddress,
IDirectPlayLobby3AImpl_EnumAddress,
@ -1584,7 +1609,6 @@ static const IDirectPlayLobby3Vtbl directPlayLobby3AVT =
IDirectPlayLobby3AImpl_UnregisterApplication,
IDirectPlayLobby3AImpl_WaitForConnectionSettings
};
#undef XCAST
/* Direct Play Lobby 3 (unicode) Virtual Table for methods */
@ -1597,10 +1621,9 @@ static const IDirectPlayLobby3Vtbl directPlayLobby3AVT =
static const IDirectPlayLobby3Vtbl directPlayLobby3WVT =
{
XCAST(QueryInterface)DPL_QueryInterface,
XCAST(AddRef)DPL_AddRef,
XCAST(Release)DPL_Release,
IDirectPlayLobby3Impl_QueryInterface,
IDirectPlayLobby3Impl_AddRef,
IDirectPlayLobby3Impl_Release,
IDirectPlayLobby3Impl_Connect,
XCAST(CreateAddress)IDirectPlayLobbyWImpl_CreateAddress,
XCAST(EnumAddress)IDirectPlayLobbyWImpl_EnumAddress,