Rémi Bernon : winmm: Reimplement joyGetPos with joyGetPosEx.

Alexandre Julliard julliard at winehq.org
Fri Dec 10 15:07:50 CST 2021


Module: wine
Branch: master
Commit: 0b49f91573cba47148545d620ef677bf9c0d82c7
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=0b49f91573cba47148545d620ef677bf9c0d82c7

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Fri Dec  3 12:19:06 2021 +0100

winmm: Reimplement joyGetPos with joyGetPosEx.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winmm/joystick.c | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/dlls/winmm/joystick.c b/dlls/winmm/joystick.c
index 604b0d7c0ba..666b0e6c871 100644
--- a/dlls/winmm/joystick.c
+++ b/dlls/winmm/joystick.c
@@ -263,20 +263,26 @@ MMRESULT WINAPI DECLSPEC_HOTPATCH joyGetPosEx(UINT wID, LPJOYINFOEX lpInfo)
 /**************************************************************************
  * 				joyGetPos	       	[WINMM.@]
  */
-MMRESULT WINAPI joyGetPos(UINT wID, LPJOYINFO lpInfo)
+MMRESULT WINAPI joyGetPos( UINT id, JOYINFO *info )
 {
-    TRACE("(%d, %p);\n", wID, lpInfo);
+    JOYINFOEX infoex =
+    {
+        .dwSize = sizeof(JOYINFOEX),
+        .dwFlags = JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNBUTTONS,
+    };
+    MMRESULT res;
 
-    if (!lpInfo) return MMSYSERR_INVALPARAM;
-    if (wID >= ARRAY_SIZE(joysticks)) return JOYERR_PARMS;
-    if (!JOY_LoadDriver(wID))	return MMSYSERR_NODRIVER;
+    TRACE( "id %u, info %p.\n", id, info );
 
-    lpInfo->wXpos = 0;
-    lpInfo->wYpos = 0;
-    lpInfo->wZpos = 0;
-    lpInfo->wButtons = 0;
+    if (!info) return MMSYSERR_INVALPARAM;
+    if ((res = joyGetPosEx( id, &infoex ))) return res;
 
-    return SendDriverMessage( joysticks[wID].hDriver, JDD_GETPOS, (LPARAM)lpInfo, 0 );
+    info->wXpos = infoex.dwXpos;
+    info->wYpos = infoex.dwYpos;
+    info->wZpos = infoex.dwZpos;
+    info->wButtons = infoex.dwButtons;
+
+    return JOYERR_NOERROR;
 }
 
 /**************************************************************************




More information about the wine-cvs mailing list