فهرست منبع

Allow opening joysticks that are read-only on Linux

Fixes https://github.com/libsdl-org/SDL/issues/4713
Sam Lantinga 3 سال پیش
والد
کامیت
b8c00bf914
1فایلهای تغییر یافته به همراه6 افزوده شده و 1 حذف شده
  1. 6 1
      src/joystick/linux/SDL_sysjoystick.c

+ 6 - 1
src/joystick/linux/SDL_sysjoystick.c

@@ -963,7 +963,12 @@ PrepareJoystickHwdata(SDL_Joystick *joystick, SDL_joylist_item *item)
                                      &joystick->naxes,
                                      &joystick->nhats);
     } else {
-        const int fd = open(item->path, O_RDWR | O_CLOEXEC, 0);
+        /* Try read-write first, so we can do rumble */
+        int fd = open(item->path, O_RDWR | O_CLOEXEC, 0);
+        if (fd < 0) {
+            /* Try read-only again, at least we'll get events in this case */
+            fd = open(item->path, O_RDONLY | O_CLOEXEC, 0);
+        }
         if (fd < 0) {
             return SDL_SetError("Unable to open %s", item->path);
         }