From 417713a75c6def409529852ff2429ffa1226a6a2 Mon Sep 17 00:00:00 2001 From: Jimb Esser Date: Fri, 20 Mar 2020 19:49:19 -0700 Subject: [PATCH] Probable fix for compile errors on Mac OS and (non-VS) Win32 --- configure.ac | 8 +++++++- src/joystick/windows/SDL_rawinputjoystick.c | 6 ++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 4596adc6b..beba89439 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 9d2471ac1..8e013c656 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);