Skip to content

Commit

Permalink
Don't update the device list for devices we know aren't supported
Browse files Browse the repository at this point in the history
This should reduce HID enumeration (hitting the USB bus) if for some reason we're getting spammed with false device insert/removal events
  • Loading branch information
slouken committed Aug 9, 2018
1 parent cf82309 commit ab07ce1
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/joystick/hidapi/SDL_hidapijoystick.c
Expand Up @@ -79,6 +79,20 @@ static SDL_HIDAPI_Device *SDL_HIDAPI_devices;
static int SDL_HIDAPI_numjoysticks = 0;
static Uint32 SDL_HIDAPI_last_detect = 0;

static SDL_bool
HIDAPI_IsDeviceSupported(Uint16 vendor_id, Uint16 product_id)
{
int i;

for (i = 0; i < SDL_arraysize(SDL_HIDAPI_drivers); ++i) {
SDL_HIDAPI_DeviceDriver *driver = SDL_HIDAPI_drivers[i];
if (driver->enabled && driver->IsSupportedDevice(vendor_id, product_id, -1, 0, 0)) {
return SDL_TRUE;
}
}
return SDL_FALSE;
}

static SDL_HIDAPI_DeviceDriver *
HIDAPI_GetDeviceDriver(SDL_HIDAPI_Device *device)
{
Expand Down Expand Up @@ -388,6 +402,11 @@ HIDAPI_IsDevicePresent(Uint16 vendor_id, Uint16 product_id)
{
SDL_HIDAPI_Device *device;

/* Don't update the device list for devices we know aren't supported */
if (!HIDAPI_IsDeviceSupported(vendor_id, product_id)) {
return SDL_FALSE;
}

/* Make sure the device list is completely up to date when we check for device presence */
HIDAPI_UpdateDeviceList();

Expand Down

0 comments on commit ab07ce1

Please sign in to comment.