From d31f90d9e18f546b7f8dba7bdb1dc5493228485d Mon Sep 17 00:00:00 2001 From: Sam Lantinga 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 bbb223728..9bc123c39 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];