Module: wine Branch: master Commit: 2774d4046369d0826138d46147eeb5d7bdd2db25 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2774d4046369d0826138d46147...
Author: Vitaliy Margolen wine-patches@kievinfo.com Date: Tue Dec 28 12:24:38 2010 -0700
dinput: Convert DirectInput to using interface instead of vtbl.
---
dlls/dinput/dinput_main.c | 45 +++++++++++++++++++++++------------------ dlls/dinput/dinput_private.h | 8 +++--- 2 files changed, 29 insertions(+), 24 deletions(-)
diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c index 066d8a8..d0943c2 100644 --- a/dlls/dinput/dinput_main.c +++ b/dlls/dinput/dinput_main.c @@ -56,24 +56,29 @@ static const IDirectInput7WVtbl ddi7wvt; static const IDirectInput8AVtbl ddi8avt; static const IDirectInput8WVtbl ddi8wvt;
+static inline IDirectInputImpl *impl_from_IDirectInput7A( IDirectInput7A *iface ) +{ + return CONTAINING_RECORD( iface, IDirectInputImpl, IDirectInput7A_iface ); +} + static inline IDirectInputImpl *impl_from_IDirectInput7W( IDirectInput7W *iface ) { - return CONTAINING_RECORD( iface, IDirectInputImpl, lpVtbl7w ); + return CONTAINING_RECORD( iface, IDirectInputImpl, IDirectInput7W_iface ); }
static inline IDirectInputImpl *impl_from_IDirectInput8A( IDirectInput8A *iface ) { - return CONTAINING_RECORD( iface, IDirectInputImpl, lpVtbl8a ); + return CONTAINING_RECORD( iface, IDirectInputImpl, IDirectInput8A_iface ); }
static inline IDirectInputImpl *impl_from_IDirectInput8W( IDirectInput8W *iface ) { - return CONTAINING_RECORD( iface, IDirectInputImpl, lpVtbl8w ); + return CONTAINING_RECORD( iface, IDirectInputImpl, IDirectInput8W_iface ); }
static inline IDirectInput7W *IDirectInput7W_from_impl( IDirectInputImpl *iface ) { - return (IDirectInput7W *)(&iface->lpVtbl7w); + return (IDirectInput7W *)(&iface->IDirectInput7W_iface); }
static const struct dinput_device *dinput_devices[] = @@ -133,10 +138,10 @@ HRESULT WINAPI DirectInputCreateEx( else return DIERR_OLDDIRECTINPUTVERSION;
- This->lpVtbl = &ddi7avt; - This->lpVtbl7w = &ddi7wvt; - This->lpVtbl8a = &ddi8avt; - This->lpVtbl8w = &ddi8wvt; + This->IDirectInput7A_iface.lpVtbl = &ddi7avt; + This->IDirectInput7W_iface.lpVtbl = &ddi7wvt; + This->IDirectInput8A_iface.lpVtbl = &ddi8avt; + This->IDirectInput8W_iface.lpVtbl = &ddi8wvt; This->ref = 0; This->dwVersion = dwVersion; This->evsequence = 1; @@ -252,7 +257,7 @@ static HRESULT WINAPI IDirectInputAImpl_EnumDevices( LPDIRECTINPUT7A iface, DWORD dwDevType, LPDIENUMDEVICESCALLBACKA lpCallback, LPVOID pvRef, DWORD dwFlags) { - IDirectInputImpl *This = (IDirectInputImpl *)iface; + IDirectInputImpl *This = impl_from_IDirectInput7A(iface); DIDEVICEINSTANCEA devInstance; unsigned int i; int j, r; @@ -310,7 +315,7 @@ static HRESULT WINAPI IDirectInputWImpl_EnumDevices(
static ULONG WINAPI IDirectInputAImpl_AddRef(LPDIRECTINPUT7A iface) { - IDirectInputImpl *This = (IDirectInputImpl *)iface; + IDirectInputImpl *This = impl_from_IDirectInput7A( iface ); ULONG ref = InterlockedIncrement(&This->ref);
TRACE( "(%p) incrementing from %d\n", This, ref - 1); @@ -325,7 +330,7 @@ static ULONG WINAPI IDirectInputWImpl_AddRef(LPDIRECTINPUT7W iface)
static ULONG WINAPI IDirectInputAImpl_Release(LPDIRECTINPUT7A iface) { - IDirectInputImpl *This = (IDirectInputImpl *)iface; + IDirectInputImpl *This = impl_from_IDirectInput7A( iface ); ULONG ref = InterlockedDecrement( &This->ref );
TRACE( "(%p) releasing from %d\n", This, ref + 1 ); @@ -354,7 +359,7 @@ static ULONG WINAPI IDirectInputWImpl_Release(LPDIRECTINPUT7W iface)
static HRESULT WINAPI IDirectInputAImpl_QueryInterface(LPDIRECTINPUT7A iface, REFIID riid, LPVOID *ppobj) { - IDirectInputImpl *This = (IDirectInputImpl *)iface; + IDirectInputImpl *This = impl_from_IDirectInput7A( iface );
TRACE( "(%p)->(%s,%p)\n", This, debugstr_guid(riid), ppobj );
@@ -363,7 +368,7 @@ static HRESULT WINAPI IDirectInputAImpl_QueryInterface(LPDIRECTINPUT7A iface, RE IsEqualGUID( &IID_IDirectInput2A, riid ) || IsEqualGUID( &IID_IDirectInput7A, riid )) { - *ppobj = &This->lpVtbl; + *ppobj = &This->IDirectInput7A_iface; IUnknown_AddRef( (IUnknown*)*ppobj );
return DI_OK; @@ -373,7 +378,7 @@ static HRESULT WINAPI IDirectInputAImpl_QueryInterface(LPDIRECTINPUT7A iface, RE IsEqualGUID( &IID_IDirectInput2W, riid ) || IsEqualGUID( &IID_IDirectInput7W, riid )) { - *ppobj = &This->lpVtbl7w; + *ppobj = &This->IDirectInput7W_iface; IUnknown_AddRef( (IUnknown*)*ppobj );
return DI_OK; @@ -381,7 +386,7 @@ static HRESULT WINAPI IDirectInputAImpl_QueryInterface(LPDIRECTINPUT7A iface, RE
if (IsEqualGUID( &IID_IDirectInput8A, riid )) { - *ppobj = &This->lpVtbl8a; + *ppobj = &This->IDirectInput8A_iface; IUnknown_AddRef( (IUnknown*)*ppobj );
return DI_OK; @@ -389,7 +394,7 @@ static HRESULT WINAPI IDirectInputAImpl_QueryInterface(LPDIRECTINPUT7A iface, RE
if (IsEqualGUID( &IID_IDirectInput8W, riid )) { - *ppobj = &This->lpVtbl8w; + *ppobj = &This->IDirectInput8W_iface; IUnknown_AddRef( (IUnknown*)*ppobj );
return DI_OK; @@ -423,7 +428,7 @@ static HRESULT WINAPI IDirectInputWImpl_Initialize(LPDIRECTINPUT7W iface, HINSTA
static HRESULT WINAPI IDirectInputAImpl_GetDeviceStatus(LPDIRECTINPUT7A iface, REFGUID rguid) { - IDirectInputImpl *This = (IDirectInputImpl *)iface; + IDirectInputImpl *This = impl_from_IDirectInput7A( iface ); HRESULT hr; LPDIRECTINPUTDEVICEA device;
@@ -447,7 +452,7 @@ static HRESULT WINAPI IDirectInputAImpl_RunControlPanel(LPDIRECTINPUT7A iface, HWND hwndOwner, DWORD dwFlags) { - IDirectInputImpl *This = (IDirectInputImpl *)iface; + IDirectInputImpl *This = impl_from_IDirectInput7A( iface );
FIXME( "(%p)->(%p,%08x): stub\n", This, hwndOwner, dwFlags );
@@ -463,7 +468,7 @@ static HRESULT WINAPI IDirectInputWImpl_RunControlPanel(LPDIRECTINPUT7W iface, H static HRESULT WINAPI IDirectInput2AImpl_FindDevice(LPDIRECTINPUT7A iface, REFGUID rguid, LPCSTR pszName, LPGUID pguidInstance) { - IDirectInputImpl *This = (IDirectInputImpl *)iface; + IDirectInputImpl *This = impl_from_IDirectInput7A( iface );
FIXME( "(%p)->(%s, %s, %p): stub\n", This, debugstr_guid(rguid), pszName, pguidInstance );
@@ -483,7 +488,7 @@ static HRESULT WINAPI IDirectInput2WImpl_FindDevice(LPDIRECTINPUT7W iface, REFGU static HRESULT WINAPI IDirectInput7AImpl_CreateDeviceEx(LPDIRECTINPUT7A iface, REFGUID rguid, REFIID riid, LPVOID* pvOut, LPUNKNOWN lpUnknownOuter) { - IDirectInputImpl *This = (IDirectInputImpl *)iface; + IDirectInputImpl *This = impl_from_IDirectInput7A( iface ); HRESULT ret_value = DIERR_DEVICENOTREG; unsigned int i;
diff --git a/dlls/dinput/dinput_private.h b/dlls/dinput/dinput_private.h index 16b4559..b2b4c00 100644 --- a/dlls/dinput/dinput_private.h +++ b/dlls/dinput/dinput_private.h @@ -30,10 +30,10 @@ typedef struct IDirectInputImpl IDirectInputImpl; struct IDirectInputImpl { - const IDirectInput7AVtbl *lpVtbl; - const IDirectInput7WVtbl *lpVtbl7w; - const IDirectInput8AVtbl *lpVtbl8a; - const IDirectInput8WVtbl *lpVtbl8w; + IDirectInput7A IDirectInput7A_iface; + IDirectInput7W IDirectInput7W_iface; + IDirectInput8A IDirectInput8A_iface; + IDirectInput8W IDirectInput8W_iface;
LONG ref;