[PATCH v2 06/10] winmm: Reimplement joyGetPos with joyGetPosEx.

Andrew Eikum aeikum at codeweavers.com
Thu Dec 9 09:32:23 CST 2021


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>

On Fri, Dec 03, 2021 at 12:19:06PM +0100, Rémi Bernon wrote:
> Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
> ---
>  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;
>  }
>  
>  /**************************************************************************
> -- 
> 2.34.0
> 
> 



More information about the wine-devel mailing list