Browse Source

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

Jimb Esser 5 years ago
parent
commit
417713a75c
2 changed files with 11 additions and 3 deletions
  1. 7 1
      configure.ac
  2. 4 2
      src/joystick/windows/SDL_rawinputjoystick.c

+ 7 - 1
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"

+ 4 - 2
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);