SDL: Synchronize controller access on the Java side on Android

From 7222c04fbf2b904e815f5ac9c8623ef8030fd261 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 12 May 2026 18:59:06 -0700
Subject: [PATCH] Synchronize controller access on the Java side on Android

---
 .../main/java/org/libsdl/app/SDLControllerManager.java    | 8 ++++----
 1 file changed, 4 insertions(+), 4 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 bcdf33233a9e9..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
@@ -340,7 +340,7 @@ synchronized void pollInputDevices() {
         }
     }
 
-    synchronized protected SDLJoystick getJoystick(int device_id) {
+    protected SDLJoystick getJoystick(int device_id) {
         for (SDLJoystick joystick : mJoysticks) {
             if (joystick.device_id == device_id) {
                 return joystick;
@@ -354,7 +354,7 @@ synchronized protected SDLJoystick getJoystick(int device_id) {
      * @param event the event to be handled.
      * @return if given event was processed.
      */
-    boolean handleMotionEvent(MotionEvent event) {
+    synchronized boolean handleMotionEvent(MotionEvent event) {
         int actionPointerIndex = event.getActionIndex();
         int action = event.getActionMasked();
         if (action == MotionEvent.ACTION_MOVE) {
@@ -524,7 +524,7 @@ int getButtonMask(InputDevice joystickDevice) {
         return button_mask;
     }
 
-    void setLED(int device_id, int red, int green, int blue) {
+    synchronized void setLED(int device_id, int red, int green, int blue) {
         if (Build.VERSION.SDK_INT < 31 /* Android 12.0 (S) */) {
             return;
         }
@@ -542,7 +542,7 @@ void setLED(int device_id, int red, int green, int blue) {
         joystick.lightsSession.requestLights(lightsRequest.build());
     }
 
-    void setSensorsEnabled(int device_id, boolean enabled) {
+    synchronized void setSensorsEnabled(int device_id, boolean enabled) {
         if (Build.VERSION.SDK_INT < 31 /* Android 12.0 (S) */) {
             return;
         }