Probable fix for compile errors on Mac OS and (non-VS) Win32
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
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);