From 6a07885029beb3b737806b6cff4cbdd3d498663a Mon Sep 17 00:00:00 2001 From: Vitaliy Margolen Date: Sun, 9 Jan 2011 15:44:05 -0700 Subject: [PATCH] dinput: Explicitly define ASCII and Unicode methods in joystick base class. Use new methods in child classes. --- dlls/dinput/joystick.c | 80 +++++++++++++++++++++---------- dlls/dinput/joystick_linux.c | 10 ++-- dlls/dinput/joystick_linuxinput.c | 6 +-- dlls/dinput/joystick_osx.c | 17 ++----- dlls/dinput/joystick_private.h | 17 +++---- 5 files changed, 76 insertions(+), 54 deletions(-) diff --git a/dlls/dinput/joystick.c b/dlls/dinput/joystick.c index 520eb4dc9ad..cce4ac5f161 100644 --- a/dlls/dinput/joystick.c +++ b/dlls/dinput/joystick.c @@ -40,16 +40,21 @@ static inline JoystickGenericImpl *impl_from_IDirectInputDevice8W(IDirectInputDe { return (JoystickGenericImpl *) iface; } +static inline IDirectInputDevice8A *IDirectInputDevice8A_from_impl(JoystickGenericImpl *This) +{ + return (IDirectInputDevice8A *)This; +} +static inline IDirectInputDevice8W *IDirectInputDevice8W_from_impl(JoystickGenericImpl *This) +{ + return (IDirectInputDevice8W *)This; +} /****************************************************************************** * SetProperty : change input device properties */ -HRESULT WINAPI JoystickAGenericImpl_SetProperty( - LPDIRECTINPUTDEVICE8A iface, - REFGUID rguid, - LPCDIPROPHEADER ph) +HRESULT WINAPI JoystickWGenericImpl_SetProperty(LPDIRECTINPUTDEVICE8W iface, REFGUID rguid, LPCDIPROPHEADER ph) { - JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); + JoystickGenericImpl *This = impl_from_IDirectInputDevice8W(iface); DWORD i; TRACE("(%p,%s,%p)\n",This,debugstr_guid(rguid),ph); @@ -119,13 +124,19 @@ HRESULT WINAPI JoystickAGenericImpl_SetProperty( break; } default: - return IDirectInputDevice2AImpl_SetProperty(iface, rguid, ph); + return IDirectInputDevice2WImpl_SetProperty(iface, rguid, ph); } } return DI_OK; } +HRESULT WINAPI JoystickAGenericImpl_SetProperty(LPDIRECTINPUTDEVICE8A iface, REFGUID rguid, LPCDIPROPHEADER ph) +{ + JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); + return JoystickWGenericImpl_SetProperty(IDirectInputDevice8W_from_impl(This), rguid, ph); +} + void _dump_DIDEVCAPS(const DIDEVCAPS *lpDIDevCaps) { TRACE("dwSize: %d\n", lpDIDevCaps->dwSize); @@ -149,11 +160,9 @@ void _dump_DIDEVCAPS(const DIDEVCAPS *lpDIDevCaps) } } -HRESULT WINAPI JoystickAGenericImpl_GetCapabilities( - LPDIRECTINPUTDEVICE8A iface, - LPDIDEVCAPS lpDIDevCaps) +HRESULT WINAPI JoystickWGenericImpl_GetCapabilities(LPDIRECTINPUTDEVICE8W iface, LPDIDEVCAPS lpDIDevCaps) { - JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); + JoystickGenericImpl *This = impl_from_IDirectInputDevice8W(iface); int size; TRACE("%p->(%p)\n",iface,lpDIDevCaps); @@ -179,6 +188,12 @@ HRESULT WINAPI JoystickAGenericImpl_GetCapabilities( return DI_OK; } +HRESULT WINAPI JoystickAGenericImpl_GetCapabilities(LPDIRECTINPUTDEVICE8A iface, LPDIDEVCAPS lpDIDevCaps) +{ + JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); + return JoystickWGenericImpl_GetCapabilities(IDirectInputDevice8W_from_impl(This), lpDIDevCaps); +} + /****************************************************************************** * GetObjectInfo : get object info */ @@ -207,12 +222,13 @@ HRESULT WINAPI JoystickWGenericImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface, HRESULT WINAPI JoystickAGenericImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8A iface, LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) { + JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); HRESULT res; DIDEVICEOBJECTINSTANCEW didoiW; DWORD dwSize = pdidoi->dwSize; didoiW.dwSize = sizeof(didoiW); - res = JoystickWGenericImpl_GetObjectInfo((LPDIRECTINPUTDEVICE8W)iface, &didoiW, dwObj, dwHow); + res = JoystickWGenericImpl_GetObjectInfo(IDirectInputDevice8W_from_impl(This), &didoiW, dwObj, dwHow); if (res != DI_OK) return res; memset(pdidoi, 0, pdidoi->dwSize); @@ -227,12 +243,9 @@ HRESULT WINAPI JoystickAGenericImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8A iface, /****************************************************************************** * GetProperty : get input device properties */ -HRESULT WINAPI JoystickAGenericImpl_GetProperty( - LPDIRECTINPUTDEVICE8A iface, - REFGUID rguid, - LPDIPROPHEADER pdiph) +HRESULT WINAPI JoystickWGenericImpl_GetProperty(LPDIRECTINPUTDEVICE8W iface, REFGUID rguid, LPDIPROPHEADER pdiph) { - JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); + JoystickGenericImpl *This = impl_from_IDirectInputDevice8W(iface); TRACE("(%p,%s,%p)\n", iface, debugstr_guid(rguid), pdiph); @@ -278,13 +291,19 @@ HRESULT WINAPI JoystickAGenericImpl_GetProperty( break; } default: - return IDirectInputDevice2AImpl_GetProperty(iface, rguid, pdiph); + return IDirectInputDevice2WImpl_GetProperty(iface, rguid, pdiph); } } return DI_OK; } +HRESULT WINAPI JoystickAGenericImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface, REFGUID rguid, LPDIPROPHEADER pdiph) +{ + JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); + return JoystickWGenericImpl_GetProperty(IDirectInputDevice8W_from_impl(This), rguid, pdiph); +} + /****************************************************************************** * GetDeviceInfo : get information about a device's identity */ @@ -356,9 +375,9 @@ HRESULT WINAPI JoystickWGenericImpl_GetDeviceInfo( return DI_OK; } -HRESULT WINAPI JoystickAGenericImpl_Poll(LPDIRECTINPUTDEVICE8A iface) +HRESULT WINAPI JoystickWGenericImpl_Poll(LPDIRECTINPUTDEVICE8W iface) { - JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); + JoystickGenericImpl *This = impl_from_IDirectInputDevice8W(iface); TRACE("(%p)\n",This); @@ -367,20 +386,23 @@ HRESULT WINAPI JoystickAGenericImpl_Poll(LPDIRECTINPUTDEVICE8A iface) return DIERR_NOTACQUIRED; } - This->joy_polldev(iface); + This->joy_polldev(IDirectInputDevice8A_from_impl(This)); return DI_OK; } +HRESULT WINAPI JoystickAGenericImpl_Poll(LPDIRECTINPUTDEVICE8A iface) +{ + JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); + return JoystickWGenericImpl_Poll(IDirectInputDevice8W_from_impl(This)); +} + /****************************************************************************** * GetDeviceState : returns the "state" of the joystick. * */ -HRESULT WINAPI JoystickAGenericImpl_GetDeviceState( - LPDIRECTINPUTDEVICE8A iface, - DWORD len, - LPVOID ptr) +HRESULT WINAPI JoystickWGenericImpl_GetDeviceState(LPDIRECTINPUTDEVICE8W iface, DWORD len, LPVOID ptr) { - JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); + JoystickGenericImpl *This = impl_from_IDirectInputDevice8W(iface); TRACE("(%p,0x%08x,%p)\n", This, len, ptr); @@ -390,7 +412,7 @@ HRESULT WINAPI JoystickAGenericImpl_GetDeviceState( } /* update joystick state */ - This->joy_polldev(iface); + This->joy_polldev(IDirectInputDevice8A_from_impl(This)); /* convert and copy data to user supplied buffer */ fill_DataFormat(ptr, len, &This->js, &This->base.data_format); @@ -398,6 +420,12 @@ HRESULT WINAPI JoystickAGenericImpl_GetDeviceState( return DI_OK; } +HRESULT WINAPI JoystickAGenericImpl_GetDeviceState(LPDIRECTINPUTDEVICE8A iface, DWORD len, LPVOID ptr) +{ + JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); + return JoystickWGenericImpl_GetDeviceState(IDirectInputDevice8W_from_impl(This), len, ptr); +} + /* * This maps the read value (from the input event) to a value in the * 'wanted' range. diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c index 06d6393628c..c7958ae5783 100644 --- a/dlls/dinput/joystick_linux.c +++ b/dlls/dinput/joystick_linux.c @@ -676,13 +676,13 @@ static const IDirectInputDevice8WVtbl JoystickWvt = IDirectInputDevice2WImpl_QueryInterface, IDirectInputDevice2WImpl_AddRef, IDirectInputDevice2WImpl_Release, - XCAST(GetCapabilities)JoystickAGenericImpl_GetCapabilities, + JoystickWGenericImpl_GetCapabilities, IDirectInputDevice2WImpl_EnumObjects, - XCAST(GetProperty)JoystickAGenericImpl_GetProperty, - XCAST(SetProperty)JoystickAGenericImpl_SetProperty, + JoystickWGenericImpl_GetProperty, + JoystickWGenericImpl_SetProperty, XCAST(Acquire)JoystickLinuxAImpl_Acquire, XCAST(Unacquire)JoystickLinuxAImpl_Unacquire, - XCAST(GetDeviceState)JoystickAGenericImpl_GetDeviceState, + JoystickWGenericImpl_GetDeviceState, IDirectInputDevice2WImpl_GetDeviceData, IDirectInputDevice2WImpl_SetDataFormat, IDirectInputDevice2WImpl_SetEventNotification, @@ -698,7 +698,7 @@ static const IDirectInputDevice8WVtbl JoystickWvt = IDirectInputDevice2WImpl_SendForceFeedbackCommand, IDirectInputDevice2WImpl_EnumCreatedEffectObjects, IDirectInputDevice2WImpl_Escape, - XCAST(Poll)JoystickAGenericImpl_Poll, + JoystickWGenericImpl_Poll, IDirectInputDevice2WImpl_SendDeviceData, IDirectInputDevice7WImpl_EnumEffectsInFile, IDirectInputDevice7WImpl_WriteEffectToFile, diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c index 9182d48d545..8b53549687a 100644 --- a/dlls/dinput/joystick_linuxinput.c +++ b/dlls/dinput/joystick_linuxinput.c @@ -1366,13 +1366,13 @@ static const IDirectInputDevice8WVtbl JoystickWvt = IDirectInputDevice2WImpl_QueryInterface, IDirectInputDevice2WImpl_AddRef, IDirectInputDevice2WImpl_Release, - XCAST(GetCapabilities)JoystickAGenericImpl_GetCapabilities, + JoystickWGenericImpl_GetCapabilities, IDirectInputDevice2WImpl_EnumObjects, XCAST(GetProperty)JoystickAImpl_GetProperty, XCAST(SetProperty)JoystickAImpl_SetProperty, XCAST(Acquire)JoystickAImpl_Acquire, XCAST(Unacquire)JoystickAImpl_Unacquire, - XCAST(GetDeviceState)JoystickAGenericImpl_GetDeviceState, + JoystickWGenericImpl_GetDeviceState, IDirectInputDevice2WImpl_GetDeviceData, IDirectInputDevice2WImpl_SetDataFormat, IDirectInputDevice2WImpl_SetEventNotification, @@ -1388,7 +1388,7 @@ static const IDirectInputDevice8WVtbl JoystickWvt = XCAST(SendForceFeedbackCommand)JoystickAImpl_SendForceFeedbackCommand, XCAST(EnumCreatedEffectObjects)JoystickAImpl_EnumCreatedEffectObjects, IDirectInputDevice2WImpl_Escape, - XCAST(Poll)JoystickAGenericImpl_Poll, + JoystickWGenericImpl_Poll, IDirectInputDevice2WImpl_SendDeviceData, IDirectInputDevice7WImpl_EnumEffectsInFile, IDirectInputDevice7WImpl_WriteEffectToFile, diff --git a/dlls/dinput/joystick_osx.c b/dlls/dinput/joystick_osx.c index f8332601256..672607284d1 100644 --- a/dlls/dinput/joystick_osx.c +++ b/dlls/dinput/joystick_osx.c @@ -975,24 +975,18 @@ static const IDirectInputDevice8AVtbl JoystickAvt = IDirectInputDevice8AImpl_GetImageInfo }; -#if !defined(__STRICT_ANSI__) && defined(__GNUC__) -# define XCAST(fun) (typeof(JoystickWvt.fun)) -#else -# define XCAST(fun) (void*) -#endif - static const IDirectInputDevice8WVtbl JoystickWvt = { IDirectInputDevice2WImpl_QueryInterface, IDirectInputDevice2WImpl_AddRef, IDirectInputDevice2WImpl_Release, - XCAST(GetCapabilities)JoystickAGenericImpl_GetCapabilities, + JoystickWGenericImpl_GetCapabilities, IDirectInputDevice2WImpl_EnumObjects, - XCAST(GetProperty)JoystickAGenericImpl_GetProperty, - XCAST(SetProperty)JoystickAGenericImpl_SetProperty, + JoystickWGenericImpl_GetProperty, + JoystickWGenericImpl_SetProperty, IDirectInputDevice2WImpl_Acquire, IDirectInputDevice2WImpl_Unacquire, - XCAST(GetDeviceState)JoystickAGenericImpl_GetDeviceState, + JoystickWGenericImpl_GetDeviceState, IDirectInputDevice2WImpl_GetDeviceData, IDirectInputDevice2WImpl_SetDataFormat, IDirectInputDevice2WImpl_SetEventNotification, @@ -1008,7 +1002,7 @@ static const IDirectInputDevice8WVtbl JoystickWvt = IDirectInputDevice2WImpl_SendForceFeedbackCommand, IDirectInputDevice2WImpl_EnumCreatedEffectObjects, IDirectInputDevice2WImpl_Escape, - XCAST(Poll)JoystickAGenericImpl_Poll, + JoystickWGenericImpl_Poll, IDirectInputDevice2WImpl_SendDeviceData, IDirectInputDevice7WImpl_EnumEffectsInFile, IDirectInputDevice7WImpl_WriteEffectToFile, @@ -1016,7 +1010,6 @@ static const IDirectInputDevice8WVtbl JoystickWvt = IDirectInputDevice8WImpl_SetActionMap, IDirectInputDevice8WImpl_GetImageInfo }; -#undef XCAST #else /* HAVE_IOHIDMANAGERCREATE */ diff --git a/dlls/dinput/joystick_private.h b/dlls/dinput/joystick_private.h index dfa0dfa024d..92fb48570d0 100644 --- a/dlls/dinput/joystick_private.h +++ b/dlls/dinput/joystick_private.h @@ -63,16 +63,16 @@ HRESULT WINAPI JoystickWGenericImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface, HRESULT WINAPI JoystickAGenericImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8A iface, LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow); -HRESULT WINAPI JoystickAGenericImpl_GetProperty( LPDIRECTINPUTDEVICE8A iface, - REFGUID rguid, LPDIPROPHEADER pdiph); +HRESULT WINAPI JoystickAGenericImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface, REFGUID rguid, LPDIPROPHEADER pdiph); +HRESULT WINAPI JoystickWGenericImpl_GetProperty(LPDIRECTINPUTDEVICE8W iface, REFGUID rguid, LPDIPROPHEADER pdiph); -HRESULT WINAPI JoystickAGenericImpl_GetCapabilities( LPDIRECTINPUTDEVICE8A iface, - LPDIDEVCAPS lpDIDevCaps); +HRESULT WINAPI JoystickAGenericImpl_GetCapabilities(LPDIRECTINPUTDEVICE8A iface, LPDIDEVCAPS lpDIDevCaps); +HRESULT WINAPI JoystickWGenericImpl_GetCapabilities(LPDIRECTINPUTDEVICE8W iface, LPDIDEVCAPS lpDIDevCaps); void _dump_DIDEVCAPS(const DIDEVCAPS *lpDIDevCaps); -HRESULT WINAPI JoystickAGenericImpl_SetProperty( LPDIRECTINPUTDEVICE8A iface, - REFGUID rguid, LPCDIPROPHEADER ph); +HRESULT WINAPI JoystickAGenericImpl_SetProperty(LPDIRECTINPUTDEVICE8A iface, REFGUID rguid, LPCDIPROPHEADER ph); +HRESULT WINAPI JoystickWGenericImpl_SetProperty(LPDIRECTINPUTDEVICE8W iface, REFGUID rguid, LPCDIPROPHEADER ph); HRESULT WINAPI JoystickAGenericImpl_GetDeviceInfo( LPDIRECTINPUTDEVICE8A iface, LPDIDEVICEINSTANCEA pdidi); @@ -81,8 +81,9 @@ HRESULT WINAPI JoystickWGenericImpl_GetDeviceInfo( LPDIRECTINPUTDEVICE8W iface, LPDIDEVICEINSTANCEW pdidi); HRESULT WINAPI JoystickAGenericImpl_Poll(LPDIRECTINPUTDEVICE8A iface); +HRESULT WINAPI JoystickWGenericImpl_Poll(LPDIRECTINPUTDEVICE8W iface); -HRESULT WINAPI JoystickAGenericImpl_GetDeviceState( LPDIRECTINPUTDEVICE8A iface, - DWORD len, LPVOID ptr); +HRESULT WINAPI JoystickAGenericImpl_GetDeviceState(LPDIRECTINPUTDEVICE8A iface, DWORD len, LPVOID ptr); +HRESULT WINAPI JoystickWGenericImpl_GetDeviceState(LPDIRECTINPUTDEVICE8W iface, DWORD len, LPVOID ptr); #endif /* __WINE_DLLS_DINPUT_JOYSTICK_PRIVATE_H */