Re-enumerate devices if a read fails This allows combined Joy-Con devices to immediately separate if one of them is disconnected
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);
}