Added support for the Power A Nintendo Switch Enhanced Wireless Controller
This commit is contained in:
parent
e5f86fa1d6
commit
87cff63608
11 changed files with 37 additions and 21 deletions
|
@ -564,13 +564,13 @@ HIDAPI_XboxControllerName(Uint16 vendor_id, Uint16 product_id)
|
|||
}
|
||||
|
||||
static SDL_bool
|
||||
HIDAPI_IsDeviceSupported(Uint16 vendor_id, Uint16 product_id, Uint16 version)
|
||||
HIDAPI_IsDeviceSupported(Uint16 vendor_id, Uint16 product_id, Uint16 version, const char *name)
|
||||
{
|
||||
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, version, -1)) {
|
||||
if (driver->enabled && driver->IsSupportedDevice(vendor_id, product_id, version, -1, name)) {
|
||||
return SDL_TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -599,7 +599,7 @@ HIDAPI_GetDeviceDriver(SDL_HIDAPI_Device *device)
|
|||
|
||||
for (i = 0; i < SDL_arraysize(SDL_HIDAPI_drivers); ++i) {
|
||||
SDL_HIDAPI_DeviceDriver *driver = SDL_HIDAPI_drivers[i];
|
||||
if (driver->enabled && driver->IsSupportedDevice(device->vendor_id, device->product_id, device->version, device->interface_number)) {
|
||||
if (driver->enabled && driver->IsSupportedDevice(device->vendor_id, device->product_id, device->version, device->interface_number, device->name)) {
|
||||
return driver;
|
||||
}
|
||||
}
|
||||
|
@ -914,7 +914,7 @@ HIDAPI_UpdateDeviceList(void)
|
|||
}
|
||||
|
||||
SDL_bool
|
||||
HIDAPI_IsDevicePresent(Uint16 vendor_id, Uint16 product_id, Uint16 version)
|
||||
HIDAPI_IsDevicePresent(Uint16 vendor_id, Uint16 product_id, Uint16 version, const char *name)
|
||||
{
|
||||
SDL_HIDAPI_Device *device;
|
||||
|
||||
|
@ -924,13 +924,17 @@ HIDAPI_IsDevicePresent(Uint16 vendor_id, Uint16 product_id, Uint16 version)
|
|||
}
|
||||
|
||||
/* Don't update the device list for devices we know aren't supported */
|
||||
if (!HIDAPI_IsDeviceSupported(vendor_id, product_id, version)) {
|
||||
if (!HIDAPI_IsDeviceSupported(vendor_id, product_id, version, name)) {
|
||||
return SDL_FALSE;
|
||||
}
|
||||
|
||||
/* Make sure the device list is completely up to date when we check for device presence */
|
||||
HIDAPI_UpdateDeviceList();
|
||||
|
||||
/* Note that this isn't a perfect check - there may be multiple devices with 0 VID/PID,
|
||||
or a different name than we have it listed here, etc, but if we support the device
|
||||
and we have something similar in our device list, mark it as present.
|
||||
*/
|
||||
device = SDL_HIDAPI_devices;
|
||||
while (device) {
|
||||
if (device->vendor_id == vendor_id && device->product_id == product_id && device->driver) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue