sdl2-compat: Add Joystick / Sensor Locks (#18)

From 49724651ce5a060760da8ae6d583ea81f7ea6d39 Mon Sep 17 00:00:00 2001
From: Sylvain Becker <[EMAIL REDACTED]>
Date: Wed, 4 Jan 2023 14:28:19 +0100
Subject: [PATCH] Add Joystick / Sensor Locks (#18)

---
 src/sdl2_compat.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index 6942952..27ecfd4 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -1053,6 +1053,9 @@ static int num_joysticks = 0;
 static SDL_SensorID *sensor_list = NULL;
 static int num_sensors = 0;
 
+static SDL_mutex *joystick_lock = NULL;
+static SDL_mutex *sensor_lock = NULL;
+
 /* Functions! */
 
 static int SDLCALL EventFilter3to2(void *userdata, SDL_Event *event3);
@@ -1069,9 +1072,20 @@ SDL2Compat_InitOnStartup(void)
         SDL3_SetEventFilter(EventFilter3to2, NULL);
     }
 
+    sensor_lock = SDL3_CreateMutex();
+    if (sensor_lock == NULL) {
+        okay = 0;
+    }
+
+    joystick_lock = SDL3_CreateMutex();
+    if (sensor_lock == NULL) {
+        okay = 0;
+    }
+
     if (!okay) {
         strcpy_fn(loaderror, "Failed to initialize sdl2-compat library.");
     }
+
     return okay;
 }
 
@@ -2846,28 +2860,28 @@ DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void)
     return val;
 }
 
-DECLSPEC void SDLCALL 
+DECLSPEC void SDLCALL
 SDL_LockJoysticks(void)
 {
-    // FIXME    
+    SDL3_LockMutex(joystick_lock);
 }
 
 DECLSPEC void SDLCALL
 SDL_UnlockJoysticks(void)
 {
-    // FIXME    
+    SDL3_UnlockMutex(joystick_lock);
 }
 
-DECLSPEC void SDLCALL 
+DECLSPEC void SDLCALL
 SDL_LockSensors(void)
 {
-    // FIXME    
+    SDL3_LockMutex(sensor_lock);
 }
 
 DECLSPEC void SDLCALL
 SDL_UnlockSensors(void)
 {
-    // FIXME    
+    SDL3_UnlockMutex(sensor_lock);
 }
 
 typedef struct