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)(