Browse Source

Make sure HIDAPI is initialized whenever we call HIDAPI_IsDevicePresent()

Sam Lantinga 6 years ago
parent
commit
c10a87429d

+ 5 - 0
src/joystick/hidapi/SDL_hidapijoystick.c

@@ -918,6 +918,11 @@ HIDAPI_IsDevicePresent(Uint16 vendor_id, Uint16 product_id, Uint16 version)
 {
 {
     SDL_HIDAPI_Device *device;
     SDL_HIDAPI_Device *device;
 
 
+    /* Make sure we're initialized, as this could be called from other drivers during startup */
+    if (HIDAPI_JoystickInit() < 0) {
+        return SDL_FALSE;
+    }
+
     /* Don't update the device list for devices we know aren't supported */
     /* Don't update the device list for devices we know aren't supported */
     if (!HIDAPI_IsDeviceSupported(vendor_id, product_id, version)) {
     if (!HIDAPI_IsDeviceSupported(vendor_id, product_id, version)) {
         return SDL_FALSE;
         return SDL_FALSE;

+ 0 - 2
src/joystick/linux/SDL_sysjoystick.c

@@ -120,8 +120,6 @@ IsJoystick(int fd, char *namebuf, const size_t namebuflen, SDL_JoystickGUID *gui
     }
     }
 
 
 #ifdef SDL_JOYSTICK_HIDAPI
 #ifdef SDL_JOYSTICK_HIDAPI
-    SDL_HIDAPI_JoystickDriver.Init();
-
     if (HIDAPI_IsDevicePresent(inpid.vendor, inpid.product, inpid.version)) {
     if (HIDAPI_IsDevicePresent(inpid.vendor, inpid.product, inpid.version)) {
         /* The HIDAPI driver is taking care of this device */
         /* The HIDAPI driver is taking care of this device */
         return 0;
         return 0;