mirror of
https://github.com/Ryujinx/SDL.git
synced 2025-04-19 22:11:42 +00:00
Fixed DualSense controllers not being picked up by the HIDAPI driver
The hidraw device may take additional time to get the correct permissions for us to open it. In my tests on Steam Deck hardware, this ranges between 5-8ms. (cherry picked from commit c6ee9780df4286f66c38f3fa9732daa9afe0a8a3)
This commit is contained in:
parent
333a03f1ec
commit
d97423ebab
|
@ -729,6 +729,8 @@ hid_device * hid_open(unsigned short vendor_id, unsigned short product_id, const
|
|||
|
||||
hid_device * HID_API_EXPORT hid_open_path(const char *path, int bExclusive)
|
||||
{
|
||||
const int MAX_ATTEMPTS = 10;
|
||||
int attempt;
|
||||
hid_device *dev = NULL;
|
||||
|
||||
hid_init();
|
||||
|
@ -736,7 +738,15 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path, int bExclusive)
|
|||
dev = new_hid_device();
|
||||
|
||||
/* OPEN HERE */
|
||||
dev->device_handle = open(path, O_RDWR | O_CLOEXEC);
|
||||
for (attempt = 1; attempt <= MAX_ATTEMPTS; ++attempt) {
|
||||
dev->device_handle = open(path, O_RDWR | O_CLOEXEC);
|
||||
if (dev->device_handle < 0 && errno == EACCES) {
|
||||
/* udev might be setting up permissions, wait a bit and try again */
|
||||
usleep(1 * 1000);
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
/* If we have a good handle, return it. */
|
||||
if (dev->device_handle >= 0) {
|
||||
|
|
Loading…
Reference in a new issue