SDL: Android: also protect Hat/Joy/PadDown,Up so there are not sent without window

From 8f83ccd750fbee5af3433f30438a9beb500dc6d2 Mon Sep 17 00:00:00 2001
From: Sylvain <[EMAIL REDACTED]>
Date: Thu, 22 Jun 2023 16:19:43 +0200
Subject: [PATCH] Android: also protect Hat/Joy/PadDown,Up so there are not
 sent without window

---
 src/core/android/SDL_android.c | 40 ++++++++++++++++++++++++++++++----
 1 file changed, 36 insertions(+), 4 deletions(-)

diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c
index 1d3909b6938f..67dd335b9ab6 100644
--- a/src/core/android/SDL_android.c
+++ b/src/core/android/SDL_android.c
@@ -1032,7 +1032,17 @@ JNIEXPORT jint JNICALL SDL_JAVA_CONTROLLER_INTERFACE(onNativePadDown)(
     JNIEnv *env, jclass jcls,
     jint device_id, jint keycode)
 {
-    return Android_OnPadDown(device_id, keycode);
+    int ret = -1;
+
+    SDL_LockMutex(Android_ActivityMutex);
+
+    if (Android_Window) {
+        ret = Android_OnPadDown(device_id, keycode);
+    }
+
+    SDL_UnlockMutex(Android_ActivityMutex);
+
+    return ret;
 }
 
 /* Padup */
@@ -1040,7 +1050,17 @@ JNIEXPORT jint JNICALL SDL_JAVA_CONTROLLER_INTERFACE(onNativePadUp)(
     JNIEnv *env, jclass jcls,
     jint device_id, jint keycode)
 {
-    return Android_OnPadUp(device_id, keycode);
+    int ret = -1;
+
+    SDL_LockMutex(Android_ActivityMutex);
+
+    if (Android_Window) {
+        ret = Android_OnPadUp(device_id, keycode);
+    }
+
+    SDL_UnlockMutex(Android_ActivityMutex);
+
+    return ret;
 }
 
 /* Joy */
@@ -1048,7 +1068,13 @@ JNIEXPORT void JNICALL SDL_JAVA_CONTROLLER_INTERFACE(onNativeJoy)(
     JNIEnv *env, jclass jcls,
     jint device_id, jint axis, jfloat value)
 {
-    Android_OnJoy(device_id, axis, value);
+    SDL_LockMutex(Android_ActivityMutex);
+
+    if (Android_Window) {
+        Android_OnJoy(device_id, axis, value);
+    }
+
+    SDL_UnlockMutex(Android_ActivityMutex);
 }
 
 /* POV Hat */
@@ -1056,7 +1082,13 @@ JNIEXPORT void JNICALL SDL_JAVA_CONTROLLER_INTERFACE(onNativeHat)(
     JNIEnv *env, jclass jcls,
     jint device_id, jint hat_id, jint x, jint y)
 {
-    Android_OnHat(device_id, hat_id, x, y);
+    SDL_LockMutex(Android_ActivityMutex);
+
+    if (Android_Window) {
+        Android_OnHat(device_id, hat_id, x, y);
+    }
+
+    SDL_UnlockMutex(Android_ActivityMutex);
 }
 
 JNIEXPORT jint JNICALL SDL_JAVA_CONTROLLER_INTERFACE(nativeAddJoystick)(