Procházet zdrojové kódy

Remove devices from the list after they've been disconnected due to read errors.

This fixes problems with controllers not being re-detected when a computer goes to sleep and a controller is removed and plugged back in while it's asleep.
Sam Lantinga před 4 roky
rodič
revize
42607909a0
1 změnil soubory, kde provedl 3 přidání a 2 odebrání
  1. 3 2
      src/joystick/hidapi/SDL_hidapijoystick.c

+ 3 - 2
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;