Module: wine Branch: master Commit: 0adc4708548d824ddad1bc3d73d655dfcbad033b URL: http://source.winehq.org/git/wine.git/?a=commit;h=0adc4708548d824ddad1bc3d73...
Author: Vitaliy Margolen wine-patches@kievinfo.com Date: Mon Jan 3 07:24:34 2011 -0700
dinput: COM cleanup - use interface instead of lpvtbl in joystick effects.
---
dlls/dinput/effect_linuxinput.c | 34 +++++++++++++++++++--------------- 1 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/dlls/dinput/effect_linuxinput.c b/dlls/dinput/effect_linuxinput.c index 7802271..e35a96f 100644 --- a/dlls/dinput/effect_linuxinput.c +++ b/dlls/dinput/effect_linuxinput.c @@ -49,9 +49,9 @@ static const IDirectInputEffectVtbl LinuxInputEffectVtbl; typedef struct LinuxInputEffectImpl LinuxInputEffectImpl; struct LinuxInputEffectImpl { - const void *lpVtbl; - LONG ref; - GUID guid; + IDirectInputEffect IDirectInputEffect_iface; + LONG ref; + GUID guid;
struct ff_effect effect; /* Effect data */ int gain; /* Effect gain */ @@ -60,6 +60,10 @@ struct LinuxInputEffectImpl struct list *entry; /* Entry into the parent's list of effects */ };
+static inline LinuxInputEffectImpl *impl_from_IDirectInputEffect(IDirectInputEffect *iface) +{ + return CONTAINING_RECORD(iface, LinuxInputEffectImpl, IDirectInputEffect_iface); +}
/****************************************************************************** * DirectInputEffect Functional Helper @@ -244,14 +248,14 @@ static void _dump_DIEFFECT(LPCDIEFFECT eff, REFGUID guid) static ULONG WINAPI LinuxInputEffectImpl_AddRef( LPDIRECTINPUTEFFECT iface) { - LinuxInputEffectImpl *This = (LinuxInputEffectImpl *)iface; + LinuxInputEffectImpl *This = impl_from_IDirectInputEffect(iface); return InterlockedIncrement(&(This->ref)); }
static HRESULT WINAPI LinuxInputEffectImpl_Download( LPDIRECTINPUTEFFECT iface) { - LinuxInputEffectImpl *This = (LinuxInputEffectImpl *)iface; + LinuxInputEffectImpl *This = impl_from_IDirectInputEffect(iface);
TRACE("(this=%p)\n", This);
@@ -281,7 +285,7 @@ static HRESULT WINAPI LinuxInputEffectImpl_GetEffectGuid( LPDIRECTINPUTEFFECT iface, LPGUID pguid) { - LinuxInputEffectImpl *This = (LinuxInputEffectImpl*)iface; + LinuxInputEffectImpl *This = impl_from_IDirectInputEffect(iface);
TRACE("(this=%p,%p)\n", This, pguid);
@@ -312,7 +316,7 @@ static HRESULT WINAPI LinuxInputEffectImpl_GetParameters( DWORD dwFlags) { HRESULT diErr = DI_OK; - LinuxInputEffectImpl *This = (LinuxInputEffectImpl *)iface; + LinuxInputEffectImpl *This = impl_from_IDirectInputEffect(iface); TRACE("(this=%p,%p,%d)\n", This, peff, dwFlags);
/* Major conversion factors are: @@ -474,7 +478,7 @@ static HRESULT WINAPI LinuxInputEffectImpl_QueryInterface( REFIID riid, void **ppvObject) { - LinuxInputEffectImpl* This = (LinuxInputEffectImpl*)iface; + LinuxInputEffectImpl *This = impl_from_IDirectInputEffect(iface);
TRACE("(this=%p,%s,%p)\n", This, debugstr_guid(riid), ppvObject);
@@ -495,7 +499,7 @@ static HRESULT WINAPI LinuxInputEffectImpl_Start( DWORD dwFlags) { struct input_event event; - LinuxInputEffectImpl* This = (LinuxInputEffectImpl*)iface; + LinuxInputEffectImpl *This = impl_from_IDirectInputEffect(iface);
TRACE("(this=%p,%d,%d)\n", This, dwIterations, dwFlags);
@@ -527,8 +531,8 @@ static HRESULT WINAPI LinuxInputEffectImpl_SetParameters( LPDIRECTINPUTEFFECT iface, LPCDIEFFECT peff, DWORD dwFlags) -{ - LinuxInputEffectImpl* This = (LinuxInputEffectImpl*)iface; +{ + LinuxInputEffectImpl *This = impl_from_IDirectInputEffect(iface); DWORD type = _typeFromGUID(&This->guid); HRESULT retval = DI_OK;
@@ -727,7 +731,7 @@ static HRESULT WINAPI LinuxInputEffectImpl_Stop( LPDIRECTINPUTEFFECT iface) { struct input_event event; - LinuxInputEffectImpl *This = (LinuxInputEffectImpl *)iface; + LinuxInputEffectImpl *This = impl_from_IDirectInputEffect(iface);
TRACE("(this=%p)\n", This);
@@ -743,7 +747,7 @@ static HRESULT WINAPI LinuxInputEffectImpl_Stop( static HRESULT WINAPI LinuxInputEffectImpl_Unload( LPDIRECTINPUTEFFECT iface) { - LinuxInputEffectImpl *This = (LinuxInputEffectImpl *)iface; + LinuxInputEffectImpl *This = impl_from_IDirectInputEffect(iface); TRACE("(this=%p)\n", This);
/* Erase the downloaded effect */ @@ -758,7 +762,7 @@ static HRESULT WINAPI LinuxInputEffectImpl_Unload(
static ULONG WINAPI LinuxInputEffectImpl_Release(LPDIRECTINPUTEFFECT iface) { - LinuxInputEffectImpl *This = (LinuxInputEffectImpl *)iface; + LinuxInputEffectImpl *This = impl_from_IDirectInputEffect(iface); ULONG ref = InterlockedDecrement(&(This->ref));
if (ref == 0) @@ -786,7 +790,7 @@ HRESULT linuxinput_create_effect( HEAP_ZERO_MEMORY, sizeof(LinuxInputEffectImpl)); DWORD type = _typeFromGUID(rguid);
- newEffect->lpVtbl = &LinuxInputEffectVtbl; + newEffect->IDirectInputEffect_iface.lpVtbl = &LinuxInputEffectVtbl; newEffect->ref = 1; newEffect->guid = *rguid; newEffect->fd = fd;