From b599205d0ca7d8bcbed47579caa1e0cebc7009a7 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Tue, 9 Aug 2022 09:50:55 -0400
Subject: [PATCH] x11: Don't look up xinput2 devices unless we're in relative
mode.
---
src/video/x11/SDL_x11xinput2.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/video/x11/SDL_x11xinput2.c b/src/video/x11/SDL_x11xinput2.c
index c788b743263..db3187b0194 100644
--- a/src/video/x11/SDL_x11xinput2.c
+++ b/src/video/x11/SDL_x11xinput2.c
@@ -280,17 +280,22 @@ X11_HandleXinput2Event(SDL_VideoData *videodata, XGenericEventCookie *cookie)
case XI_RawMotion: {
const XIRawEvent *rawev = (const XIRawEvent*)cookie->data;
SDL_Mouse *mouse = SDL_GetMouse();
- SDL_XInput2DeviceInfo *devinfo = xinput2_get_device_info(videodata, rawev->deviceid);
+ SDL_XInput2DeviceInfo *devinfo;
double coords[2];
double processed_coords[2];
int i;
videodata->global_mouse_changed = SDL_TRUE;
- if (!devinfo || !mouse->relative_mode || mouse->relative_mode_warp) {
+ if (!mouse->relative_mode || mouse->relative_mode_warp) {
return 0;
}
+ devinfo = xinput2_get_device_info(videodata, rawev->deviceid);
+ if (!devinfo) {
+ return 0; /* oh well. */
+ }
+
parse_valuators(rawev->raw_values,rawev->valuators.mask,
rawev->valuators.mask_len,coords,2);