diff --git a/src/joystick/hidapi/SDL_hidapijoystick.c b/src/joystick/hidapi/SDL_hidapijoystick.c index 8c02cc415..d73ba4078 100644 --- a/src/joystick/hidapi/SDL_hidapijoystick.c +++ b/src/joystick/hidapi/SDL_hidapijoystick.c @@ -898,12 +898,13 @@ HIDAPI_UpdateDeviceList(void) } } - /* Remove any devices that weren't seen */ + /* Remove any devices that weren't seen or have been disconnected due to read errors */ device = SDL_HIDAPI_devices; while (device) { SDL_HIDAPI_Device *next = device->next; - if (!device->seen) { + if (!device->seen || + (device->driver && device->num_joysticks == 0 && !device->dev)) { HIDAPI_DelDevice(device); } device = next;