Don't call hid_enumerate() if the HIDAPI drivers are all disabled

This commit is contained in:
Sam Lantinga 2019-07-25 15:21:44 -07:00
parent aaffbb2ef6
commit dc714389f0

View File

@ -96,6 +96,7 @@ static SDL_HIDAPI_DeviceDriver *SDL_HIDAPI_drivers[] = {
&SDL_HIDAPI_DriverXboxOne, &SDL_HIDAPI_DriverXboxOne,
#endif #endif
}; };
static int SDL_HIDAPI_numdrivers = 0;
static SDL_HIDAPI_Device *SDL_HIDAPI_devices; static SDL_HIDAPI_Device *SDL_HIDAPI_devices;
static int SDL_HIDAPI_numjoysticks = 0; static int SDL_HIDAPI_numjoysticks = 0;
@ -656,6 +657,14 @@ SDL_HIDAPIDriverHintChanged(void *userdata, const char *name, const char *oldVal
} }
} }
SDL_HIDAPI_numdrivers = 0;
for (i = 0; i < SDL_arraysize(SDL_HIDAPI_drivers); ++i) {
SDL_HIDAPI_DeviceDriver *driver = SDL_HIDAPI_drivers[i];
if (driver->enabled) {
++SDL_HIDAPI_numdrivers;
}
}
/* Update device list if driver availability changes */ /* Update device list if driver availability changes */
while (device) { while (device) {
if (device->driver) { if (device->driver) {
@ -869,6 +878,7 @@ HIDAPI_UpdateDeviceList(void)
} }
/* Enumerate the devices */ /* Enumerate the devices */
if (SDL_HIDAPI_numdrivers > 0) {
devs = hid_enumerate(0, 0); devs = hid_enumerate(0, 0);
if (devs) { if (devs) {
for (info = devs; info; info = info->next) { for (info = devs; info; info = info->next) {
@ -881,6 +891,7 @@ HIDAPI_UpdateDeviceList(void)
} }
hid_free_enumeration(devs); hid_free_enumeration(devs);
} }
}
/* Remove any devices that weren't seen */ /* Remove any devices that weren't seen */
device = SDL_HIDAPI_devices; device = SDL_HIDAPI_devices;