From e27248c27ebd89b25a67bf489ccbcfeef0e5bf32 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Wed, 6 Nov 2013 09:48:45 -0300 Subject: [PATCH] Fixes Bug 1944 - Linux events, joysticks having only hat are not read --- src/joystick/linux/SDL_sysjoystick.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c index 72fa52cad..84511da02 100644 --- a/src/joystick/linux/SDL_sysjoystick.c +++ b/src/joystick/linux/SDL_sysjoystick.c @@ -85,11 +85,14 @@ static int instance_counter = 0; 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 @@ IsJoystick(int fd, char *namebuf, const size_t namebuflen, SDL_JoystickGUID *gui test_bit(ABS_X, absbit) && test_bit(ABS_Y, absbit))) { return 0; } +#endif if (ioctl(fd, EVIOCGNAME(namebuflen), namebuf) < 0) { return 0;