[PATCH 3/6] dplayx: Use separate QI, AR and R methods for IDirectPlayLobby3 + 3A.
Michael Stefaniuc
mstefani at redhat.de
Thu Apr 11 16:52:18 CDT 2013
---
dlls/dplayx/dplobby.c | 81 +++++++++++++++++++++++++++++++++------------------
1 file changed, 52 insertions(+), 29 deletions(-)
diff --git a/dlls/dplayx/dplobby.c b/dlls/dplayx/dplobby.c
index f5c2e41..54d55d3 100644
--- a/dlls/dplayx/dplobby.c
+++ b/dlls/dplayx/dplobby.c
@@ -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,
--
1.7.11.7
More information about the wine-patches
mailing list