From 59574fe2f0a7b2a189f1129abcc83d306cfdf830 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 24 Jun 2018 13:57:22 -0400 Subject: [PATCH] x11: Normalize x11xinput2 touch x to be 1.0 at width (thanks, Zach!). "Applications (such as SDL's testgesture) do "event.tfinger.x * window_width" to find window coord. Currently the X11 XInput2 backend expects application to do "event.tfinger.x * (window_width-1)" instead. X11 XInput2 touch events are normalized so x is 1.0 at "width - 1" but other SDL backends appear to have x be 1.0 at "width". Same issue for touch event y with regards to height." Fixes Bugzilla #4183. --- src/video/x11/SDL_x11xinput2.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/video/x11/SDL_x11xinput2.c b/src/video/x11/SDL_x11xinput2.c index 06a8937cf..e8bb141d6 100644 --- a/src/video/x11/SDL_x11xinput2.c +++ b/src/video/x11/SDL_x11xinput2.c @@ -83,16 +83,8 @@ xinput2_normalize_touch_coordinates(SDL_VideoData *videodata, Window window, for (i = 0; i < videodata->numwindows; i++) { SDL_WindowData *d = videodata->windowlist[i]; if (d->xwindow == window) { - if (d->window->w == 1) { - *out_x = 0.5f; - } else { - *out_x = in_x / (d->window->w - 1); - } - if (d->window->h == 1) { - *out_y = 0.5f; - } else { - *out_y = in_y / (d->window->h - 1); - } + *out_x = in_x / d->window->w; + *out_y = in_y / d->window->h; return; } }