From d31f90d9e18f546b7f8dba7bdb1dc5493228485d Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 9 Nov 2021 12:09:01 -0800
Subject: [PATCH] Don't send game controller touchpad or sensor events unless
the application has focus
Fixes https://github.com/libsdl-org/SDL/issues/4891
---
src/joystick/SDL_joystick.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c
index bbb2237285..9bc123c39e 100644
--- a/src/joystick/SDL_joystick.c
+++ b/src/joystick/SDL_joystick.c
@@ -2721,6 +2721,13 @@ int SDL_PrivateJoystickTouchpad(SDL_Joystick *joystick, int touchpad, int finger
}
#endif
+ /* We ignore events if we don't have keyboard focus, except for touch release */
+ if (SDL_PrivateJoystickShouldIgnoreEvent()) {
+ if (event_type != SDL_CONTROLLERTOUCHPADUP) {
+ return 0;
+ }
+ }
+
/* Update internal joystick state */
finger_info->state = state;
finger_info->x = x;
@@ -2750,6 +2757,11 @@ int SDL_PrivateJoystickSensor(SDL_Joystick *joystick, SDL_SensorType type, const
int i;
int posted = 0;
+ /* We ignore events if we don't have keyboard focus */
+ if (SDL_PrivateJoystickShouldIgnoreEvent()) {
+ return 0;
+ }
+
for (i = 0; i < joystick->nsensors; ++i) {
SDL_JoystickSensorInfo *sensor = &joystick->sensors[i];