Vitaliy Margolen : dinput: Explicitly define ASCII and Unicode methods in mouse.
Alexandre Julliard
julliard at winehq.org
Mon Jan 10 10:55:20 CST 2011
Module: wine
Branch: master
Commit: 30ab6c1749bf1435f70f058b2b727ce681b961a0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=30ab6c1749bf1435f70f058b2b727ce681b961a0
Author: Vitaliy Margolen <wine-patches at kievinfo.com>
Date: Sun Jan 9 15:44:02 2011 -0700
dinput: Explicitly define ASCII and Unicode methods in mouse.
---
dlls/dinput/mouse.c | 116 +++++++++++++++++++++++++++++++++------------------
1 files changed, 75 insertions(+), 41 deletions(-)
diff --git a/dlls/dinput/mouse.c b/dlls/dinput/mouse.c
index 1b91e84..943c3c8 100644
--- a/dlls/dinput/mouse.c
+++ b/dlls/dinput/mouse.c
@@ -86,6 +86,14 @@ static inline SysMouseImpl *impl_from_IDirectInputDevice8W(IDirectInputDevice8W
{
return (SysMouseImpl *) iface;
}
+static inline IDirectInputDevice8A *IDirectInputDevice8A_from_impl(SysMouseImpl *This)
+{
+ return (IDirectInputDevice8A *)This;
+}
+static inline IDirectInputDevice8W *IDirectInputDevice8W_from_impl(SysMouseImpl *This)
+{
+ return (IDirectInputDevice8W *)This;
+}
static int dinput_mouse_hook( LPDIRECTINPUTDEVICE8A iface, WPARAM wparam, LPARAM lparam );
@@ -419,16 +427,16 @@ static BOOL dinput_window_check(SysMouseImpl* This) {
/******************************************************************************
* Acquire : gets exclusive control of the mouse
*/
-static HRESULT WINAPI SysMouseAImpl_Acquire(LPDIRECTINPUTDEVICE8A iface)
+static HRESULT WINAPI SysMouseWImpl_Acquire(LPDIRECTINPUTDEVICE8W iface)
{
- SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+ SysMouseImpl *This = impl_from_IDirectInputDevice8W(iface);
RECT rect;
POINT point;
HRESULT res;
-
+
TRACE("(this=%p)\n",This);
- if ((res = IDirectInputDevice2AImpl_Acquire(iface)) != DI_OK) return res;
+ if ((res = IDirectInputDevice2WImpl_Acquire(iface)) != DI_OK) return res;
/* Init the mouse state */
GetCursorPos( &point );
@@ -486,17 +494,23 @@ static HRESULT WINAPI SysMouseAImpl_Acquire(LPDIRECTINPUTDEVICE8A iface)
return DI_OK;
}
+static HRESULT WINAPI SysMouseAImpl_Acquire(LPDIRECTINPUTDEVICE8A iface)
+{
+ SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+ return SysMouseWImpl_Acquire(IDirectInputDevice8W_from_impl(This));
+}
+
/******************************************************************************
* Unacquire : frees the mouse
*/
-static HRESULT WINAPI SysMouseAImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface)
+static HRESULT WINAPI SysMouseWImpl_Unacquire(LPDIRECTINPUTDEVICE8W iface)
{
- SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+ SysMouseImpl *This = impl_from_IDirectInputDevice8W(iface);
HRESULT res;
TRACE("(this=%p)\n",This);
- if ((res = IDirectInputDevice2AImpl_Unacquire(iface)) != DI_OK) return res;
+ if ((res = IDirectInputDevice2WImpl_Unacquire(iface)) != DI_OK) return res;
if (This->base.dwCoopLevel & DISCL_EXCLUSIVE)
{
@@ -510,20 +524,25 @@ static HRESULT WINAPI SysMouseAImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface)
TRACE(" warping mouse back to (%d , %d)\n", This->org_coords.x, This->org_coords.y);
SetCursorPos(This->org_coords.x, This->org_coords.y);
}
-
+
return DI_OK;
}
+static HRESULT WINAPI SysMouseAImpl_Unacquire(LPDIRECTINPUTDEVICE8A iface)
+{
+ SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+ return SysMouseWImpl_Unacquire(IDirectInputDevice8W_from_impl(This));
+}
+
/******************************************************************************
* GetDeviceState : returns the "state" of the mouse.
*
* For the moment, only the "standard" return structure (DIMOUSESTATE) is
* supported.
*/
-static HRESULT WINAPI SysMouseAImpl_GetDeviceState(
- LPDIRECTINPUTDEVICE8A iface,DWORD len,LPVOID ptr
-) {
- SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+static HRESULT WINAPI SysMouseWImpl_GetDeviceState(LPDIRECTINPUTDEVICE8W iface, DWORD len, LPVOID ptr)
+{
+ SysMouseImpl *This = impl_from_IDirectInputDevice8W(iface);
if(This->base.acquired == 0) return DIERR_NOTACQUIRED;
@@ -554,20 +573,26 @@ static HRESULT WINAPI SysMouseAImpl_GetDeviceState(
This->need_warp = FALSE;
}
-
+
return DI_OK;
}
+static HRESULT WINAPI SysMouseAImpl_GetDeviceState(LPDIRECTINPUTDEVICE8A iface, DWORD len, LPVOID ptr)
+{
+ SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+ return SysMouseWImpl_GetDeviceState(IDirectInputDevice8W_from_impl(This), len, ptr);
+}
+
/******************************************************************************
* GetDeviceData : gets buffered input data.
*/
-static HRESULT WINAPI SysMouseAImpl_GetDeviceData(LPDIRECTINPUTDEVICE8A iface,
+static HRESULT WINAPI SysMouseWImpl_GetDeviceData(LPDIRECTINPUTDEVICE8W iface,
DWORD dodsize, LPDIDEVICEOBJECTDATA dod, LPDWORD entries, DWORD flags)
{
- SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+ SysMouseImpl *This = impl_from_IDirectInputDevice8W(iface);
HRESULT res;
- res = IDirectInputDevice2AImpl_GetDeviceData(iface, dodsize, dod, entries, flags);
+ res = IDirectInputDevice2WImpl_GetDeviceData(iface, dodsize, dod, entries, flags);
if (FAILED(res)) return res;
/* Check if we need to do a mouse warping */
@@ -584,14 +609,19 @@ static HRESULT WINAPI SysMouseAImpl_GetDeviceData(LPDIRECTINPUTDEVICE8A iface,
return res;
}
+static HRESULT WINAPI SysMouseAImpl_GetDeviceData(LPDIRECTINPUTDEVICE8A iface,
+ DWORD dodsize, LPDIDEVICEOBJECTDATA dod, LPDWORD entries, DWORD flags)
+{
+ SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+ return SysMouseWImpl_GetDeviceData(IDirectInputDevice8W_from_impl(This), dodsize, dod, entries, flags);
+}
+
/******************************************************************************
* GetProperty : get input device properties
*/
-static HRESULT WINAPI SysMouseAImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface,
- REFGUID rguid,
- LPDIPROPHEADER pdiph)
+static HRESULT WINAPI SysMouseWImpl_GetProperty(LPDIRECTINPUTDEVICE8W iface, REFGUID rguid, LPDIPROPHEADER pdiph)
{
- SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+ SysMouseImpl *This = impl_from_IDirectInputDevice8W(iface);
TRACE("(%p) %s,%p\n", This, debugstr_guid(rguid), pdiph);
_dump_DIPROPHEADER(pdiph);
@@ -624,21 +654,25 @@ static HRESULT WINAPI SysMouseAImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface,
}
default:
- return IDirectInputDevice2AImpl_GetProperty(iface, rguid, pdiph);
+ return IDirectInputDevice2WImpl_GetProperty(iface, rguid, pdiph);
}
}
-
+
return DI_OK;
}
+static HRESULT WINAPI SysMouseAImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface, REFGUID rguid, LPDIPROPHEADER pdiph)
+{
+ SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+ return SysMouseWImpl_GetProperty(IDirectInputDevice8W_from_impl(This), rguid, pdiph);
+}
+
/******************************************************************************
* GetCapabilities : get the device capabilities
*/
-static HRESULT WINAPI SysMouseAImpl_GetCapabilities(
- LPDIRECTINPUTDEVICE8A iface,
- LPDIDEVCAPS lpDIDevCaps)
+static HRESULT WINAPI SysMouseWImpl_GetCapabilities(LPDIRECTINPUTDEVICE8W iface, LPDIDEVCAPS lpDIDevCaps)
{
- SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+ SysMouseImpl *This = impl_from_IDirectInputDevice8W(iface);
DIDEVCAPS devcaps;
TRACE("(this=%p,%p)\n",This,lpDIDevCaps);
@@ -664,10 +698,16 @@ static HRESULT WINAPI SysMouseAImpl_GetCapabilities(
devcaps.dwFFDriverVersion = 0;
memcpy(lpDIDevCaps, &devcaps, lpDIDevCaps->dwSize);
-
+
return DI_OK;
}
+static HRESULT WINAPI SysMouseAImpl_GetCapabilities(LPDIRECTINPUTDEVICE8A iface, LPDIDEVCAPS lpDIDevCaps)
+{
+ SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
+ return SysMouseWImpl_GetCapabilities(IDirectInputDevice8W_from_impl(This), lpDIDevCaps);
+}
+
/******************************************************************************
* GetObjectInfo : get information about a device object such as a button
* or axis
@@ -697,12 +737,13 @@ static HRESULT WINAPI SysMouseWImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface,
static HRESULT WINAPI SysMouseAImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8A iface,
LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow)
{
+ SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
HRESULT res;
DIDEVICEOBJECTINSTANCEW didoiW;
DWORD dwSize = pdidoi->dwSize;
didoiW.dwSize = sizeof(didoiW);
- res = SysMouseWImpl_GetObjectInfo((LPDIRECTINPUTDEVICE8W)iface, &didoiW, dwObj, dwHow);
+ res = SysMouseWImpl_GetObjectInfo(IDirectInputDevice8W_from_impl(This), &didoiW, dwObj, dwHow);
if (res != DI_OK) return res;
memset(pdidoi, 0, pdidoi->dwSize);
@@ -786,25 +827,19 @@ static const IDirectInputDevice8AVtbl SysMouseAvt =
IDirectInputDevice8AImpl_GetImageInfo
};
-#if !defined(__STRICT_ANSI__) && defined(__GNUC__)
-# define XCAST(fun) (typeof(SysMouseWvt.fun))
-#else
-# define XCAST(fun) (void*)
-#endif
-
static const IDirectInputDevice8WVtbl SysMouseWvt =
{
IDirectInputDevice2WImpl_QueryInterface,
IDirectInputDevice2WImpl_AddRef,
IDirectInputDevice2WImpl_Release,
- XCAST(GetCapabilities)SysMouseAImpl_GetCapabilities,
+ SysMouseWImpl_GetCapabilities,
IDirectInputDevice2WImpl_EnumObjects,
- XCAST(GetProperty)SysMouseAImpl_GetProperty,
+ SysMouseWImpl_GetProperty,
IDirectInputDevice2WImpl_SetProperty,
- XCAST(Acquire)SysMouseAImpl_Acquire,
- XCAST(Unacquire)SysMouseAImpl_Unacquire,
- XCAST(GetDeviceState)SysMouseAImpl_GetDeviceState,
- XCAST(GetDeviceData)SysMouseAImpl_GetDeviceData,
+ SysMouseWImpl_Acquire,
+ SysMouseWImpl_Unacquire,
+ SysMouseWImpl_GetDeviceState,
+ SysMouseWImpl_GetDeviceData,
IDirectInputDevice2WImpl_SetDataFormat,
IDirectInputDevice2WImpl_SetEventNotification,
IDirectInputDevice2WImpl_SetCooperativeLevel,
@@ -827,4 +862,3 @@ static const IDirectInputDevice8WVtbl SysMouseWvt =
IDirectInputDevice8WImpl_SetActionMap,
IDirectInputDevice8WImpl_GetImageInfo
};
-#undef XCAST
More information about the wine-cvs
mailing list