From 5b4c10fc7bee682146f926750c11aeb7ea7e5c65 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 23 Sep 2022 02:36:53 -0700 Subject: [PATCH] Return true from IsSupportedDevice if it's a device that we _might_ support This forces an update of the device list so we have the correct state when we check to see whether a device is being handled by HIDAPI --- src/joystick/hidapi/SDL_hidapi_ps4.c | 18 +++++++++++++----- src/joystick/hidapi/SDL_hidapi_ps5.c | 19 +++++++++++++------ 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/joystick/hidapi/SDL_hidapi_ps4.c b/src/joystick/hidapi/SDL_hidapi_ps4.c index 216a37fa4..205e70f43 100644 --- a/src/joystick/hidapi/SDL_hidapi_ps4.c +++ b/src/joystick/hidapi/SDL_hidapi_ps4.c @@ -185,11 +185,19 @@ HIDAPI_DriverPS4_IsSupportedDevice(SDL_HIDAPI_Device *device, const char *name, return SDL_TRUE; } - if (device && SONY_THIRDPARTY_VENDOR(device->vendor_id) && - (size = ReadFeatureReport(device->dev, k_ePS4FeatureReportIdCapabilities, data, sizeof(data))) == 48 && - data[2] == 0x27) { - /* Supported third party controller */ - return SDL_TRUE; + if (SONY_THIRDPARTY_VENDOR(vendor_id)) { + if (device) { + if ((size = ReadFeatureReport(device->dev, k_ePS4FeatureReportIdCapabilities, data, sizeof(data))) == 48 && + data[2] == 0x27) { + /* Supported third party controller */ + return SDL_TRUE; + } else { + return SDL_FALSE; + } + } else { + /* Might be supported by this driver, enumerate and find out */ + return SDL_TRUE; + } } return SDL_FALSE; diff --git a/src/joystick/hidapi/SDL_hidapi_ps5.c b/src/joystick/hidapi/SDL_hidapi_ps5.c index 187bfb2c4..1508d4edf 100644 --- a/src/joystick/hidapi/SDL_hidapi_ps5.c +++ b/src/joystick/hidapi/SDL_hidapi_ps5.c @@ -267,13 +267,20 @@ HIDAPI_DriverPS5_IsSupportedDevice(SDL_HIDAPI_Device *device, const char *name, return SDL_TRUE; } - if (device && SONY_THIRDPARTY_VENDOR(device->vendor_id) && - (size = ReadFeatureReport(device->dev, k_EPS5FeatureReportIdCapabilities, data, sizeof(data))) == 48 && - data[2] == 0x28) { - /* Supported third party controller */ - return SDL_TRUE; + if (SONY_THIRDPARTY_VENDOR(vendor_id)) { + if (device) { + if ((size = ReadFeatureReport(device->dev, k_EPS5FeatureReportIdCapabilities, data, sizeof(data))) == 48 && + data[2] == 0x28) { + /* Supported third party controller */ + return SDL_TRUE; + } else { + return SDL_FALSE; + } + } else { + /* Might be supported by this driver, enumerate and find out */ + return SDL_TRUE; + } } - return SDL_FALSE; }