Commit 417713a75c6def409529852ff2429ffa1226a6a2

Jimb Esser 2020-03-20T19:49:19

Probable fix for compile errors on Mac OS and (non-VS) Win32

diff --git a/configure.ac b/configure.ac
index 4596adc..beba894 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3291,6 +3291,10 @@ CheckHIDAPI()
         *-*-*bsd* )
             onlylibusb=yes
             ;;
+        # RAWINPUT is only available on Win32, but can be enabled if HIDAPI is
+        *-*-cygwin* | *-*-mingw32*)
+            userawinput=yes
+            ;;
     esac
 
     AC_ARG_ENABLE(hidapi,
@@ -3316,7 +3320,9 @@ AS_HELP_STRING([--enable-hidapi], [use HIDAPI for low level joystick drivers [[d
 
         if test x$hidapi_support = xyes; then
             AC_DEFINE(SDL_JOYSTICK_HIDAPI, 1, [ ])
-            AC_DEFINE(SDL_JOYSTICK_RAWINPUT, 1, [ ])
+            if test x$userawinput = xyes; then
+                AC_DEFINE(SDL_JOYSTICK_RAWINPUT, 1, [ ])
+            fi
             EXTRA_CFLAGS="$EXTRA_CFLAGS -I$srcdir/src/hidapi/hidapi"
             SOURCES="$SOURCES $srcdir/src/joystick/hidapi/*.c"
             SOURCES="$SOURCES $srcdir/src/hidapi/SDL_hidapi.c"
diff --git a/src/joystick/windows/SDL_rawinputjoystick.c b/src/joystick/windows/SDL_rawinputjoystick.c
index 9d2471a..8e013c6 100644
--- a/src/joystick/windows/SDL_rawinputjoystick.c
+++ b/src/joystick/windows/SDL_rawinputjoystick.c
@@ -241,6 +241,7 @@ static SDL_HIDAPI_DeviceDriver *
 RAWINPUT_GetDeviceDriver(SDL_RAWINPUT_Device *device)
 {
     int i;
+    SDL_GameControllerType type;
 
     if (SDL_ShouldIgnoreJoystick(device->name, device->guid)) {
         return NULL;
@@ -253,7 +254,7 @@ RAWINPUT_GetDeviceDriver(SDL_RAWINPUT_Device *device)
         return NULL;
     }
 
-    SDL_GameControllerType type = SDL_GetJoystickGameControllerType("", device->vendor_id, device->product_id, -1, 0, 0, 0);
+    type = SDL_GetJoystickGameControllerType("", device->vendor_id, device->product_id, -1, 0, 0, 0);
 
     for (i = 0; i < SDL_arraysize(SDL_RAWINPUT_drivers); ++i) {
         SDL_HIDAPI_DeviceDriver *driver = SDL_RAWINPUT_drivers[i];
@@ -365,6 +366,7 @@ RAWINPUT_DelDevice(SDL_RAWINPUT_Device *device, SDL_bool send_event)
     SDL_RAWINPUT_Device *curr, *last;
     for (curr = SDL_RAWINPUT_devices, last = NULL; curr; last = curr, curr = curr->next) {
         if (curr == device) {
+            SDL_Joystick *joystick;
             if (last) {
                 last->next = curr->next;
             } else {
@@ -372,7 +374,7 @@ RAWINPUT_DelDevice(SDL_RAWINPUT_Device *device, SDL_bool send_event)
             }
             --SDL_RAWINPUT_numjoysticks;
 
-            SDL_Joystick *joystick = device->joystick;
+            joystick = device->joystick;
             if (joystick) {
                 /* Detach from joystick */
                 RAWINPUT_JoystickClose(joystick);