diff --git a/src/joystick/hidapi/SDL_hidapijoystick.c b/src/joystick/hidapi/SDL_hidapijoystick.c index fdeacc0f7..10cdedd6e 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); }