Fixes Bug 1944 - Linux events, joysticks having only hat are not read
authorGabriel Jacobo <gabomdq@gmail.com>
Wed, 06 Nov 2013 09:48:45 -0300
changeset 7909 4434ab25abf3
parent 7908 b339af982b62
child 7910 261addaa47d0
Fixes Bug 1944 - Linux events, joysticks having only hat are not read
src/joystick/linux/SDL_sysjoystick.c
--- a/src/joystick/linux/SDL_sysjoystick.c	Tue Nov 05 21:01:25 2013 -0800
+++ b/src/joystick/linux/SDL_sysjoystick.c	Wed Nov 06 09:48:45 2013 -0300
@@ -85,11 +85,14 @@
 static int
 IsJoystick(int fd, char *namebuf, const size_t namebuflen, SDL_JoystickGUID *guid)
 {
+    struct input_id inpid;
+    Uint16 *guid16 = (Uint16 *) ((char *) &guid->data);
+
+#if !SDL_USE_LIBUDEV
+    /* When udev is enabled we only get joystick devices here, so there's no need to test them */
     unsigned long evbit[NBITS(EV_MAX)] = { 0 };
     unsigned long keybit[NBITS(KEY_MAX)] = { 0 };
     unsigned long absbit[NBITS(ABS_MAX)] = { 0 };
-    struct input_id inpid;
-    Uint16 *guid16 = (Uint16 *) ((char *) &guid->data);
 
     if ((ioctl(fd, EVIOCGBIT(0, sizeof(evbit)), evbit) < 0) ||
         (ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(keybit)), keybit) < 0) ||
@@ -101,6 +104,7 @@
           test_bit(ABS_X, absbit) && test_bit(ABS_Y, absbit))) {
         return 0;
     }
+#endif
 
     if (ioctl(fd, EVIOCGNAME(namebuflen), namebuf) < 0) {
         return 0;