Commit 5d63a3d43528a9da9972b35a6444f3c8fd0ce752

Sam Lantinga 2022-08-09T14:06:49

Re-enumerate devices if a read fails This allows combined Joy-Con devices to immediately separate if one of them is disconnected

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
diff --git a/src/joystick/hidapi/SDL_hidapijoystick.c b/src/joystick/hidapi/SDL_hidapijoystick.c
index fdeacc0..10cdedd 100644
--- a/src/joystick/hidapi/SDL_hidapijoystick.c
+++ b/src/joystick/hidapi/SDL_hidapijoystick.c
@@ -1003,7 +1003,10 @@ HIDAPI_UpdateDevices(void)
             if (device->driver) {
                 if (SDL_TryLockMutex(device->dev_lock) == 0) {
                     device->updating = SDL_TRUE;
-                    device->driver->UpdateDevice(device);
+                    if (!device->driver->UpdateDevice(device)) {
+                        /* Try re-enumerating the device if it fails */
+                        SDL_HIDAPI_change_count = 0;
+                    }
                     device->updating = SDL_FALSE;
                     SDL_UnlockMutex(device->dev_lock);
                 }