From 59b38dfe85d1ecdd3ea59dbae653ad36d3392eb4 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sun, 17 May 2026 12:04:11 -0700
Subject: [PATCH] Revert "Change controller sensor state on the main UI thread
on Android"
This reverts commit c362f1341f2e2e6abf34ae05d6068ad89bebd00d.
It turns out this change causes a deadlock:
The main UI thread calls synchronized handleMotionEvent() which then calls SDL_LockJoysticks()
The main app thread calls SDL_LockJoysticks() and then synchronized pollInputDevices()
(cherry picked from commit 02975994c12582aef918bccb3825592e7ea36d10)
---
.../main/java/org/libsdl/app/SDLControllerManager.java | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java b/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java
index 2a0296eb0c03f..31b07b0ac0cdb 100644
--- a/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java
+++ b/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java
@@ -91,13 +91,7 @@ static void joystickSetLED(int device_id, int red, int green, int blue) {
* This method is called by SDL using JNI.
*/
static void joystickSetSensorsEnabled(int device_id, boolean enabled) {
- // Run this on the UI thread so we don't race with enableSensor() in SDLSurface.java
- SDL.getContext().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- mJoystickHandler.setSensorsEnabled(device_id, enabled);
- }
- });
+ mJoystickHandler.setSensorsEnabled(device_id, enabled);
}
/**