diff --git a/rpcs3/Input/hid_pad_handler.cpp b/rpcs3/Input/hid_pad_handler.cpp index 16602412bf..ff888911b9 100644 --- a/rpcs3/Input/hid_pad_handler.cpp +++ b/rpcs3/Input/hid_pad_handler.cpp @@ -19,7 +19,7 @@ LOG_CHANNEL(hid_log, "HID"); #ifdef ANDROID -std::vector g_android_usb_devices; +std::vector g_android_usb_devices; std::mutex g_android_usb_devices_mutex; #endif @@ -192,7 +192,15 @@ void hid_pad_handler::enumerate_devices() std::lock_guard lock(g_android_usb_devices_mutex); for (auto device : g_android_usb_devices) { - device_paths.insert(device); + auto filter = [&](id_pair id) + { + return id.m_vid == device.vendorId && id.m_pid == device.productId; + }; + + if (std::find_if(m_ids.begin(), m_ids.end(), filter) != m_ids.end()) + { + device_paths.insert(device.fd); + } } } #else diff --git a/rpcs3/Input/hid_pad_handler.h b/rpcs3/Input/hid_pad_handler.h index 11fa1dba41..36e7358211 100644 --- a/rpcs3/Input/hid_pad_handler.h +++ b/rpcs3/Input/hid_pad_handler.h @@ -15,8 +15,16 @@ #ifdef ANDROID using hid_enumerated_device_type = int; using hid_enumerated_device_view = int; + +struct android_usb_device +{ + int fd; + u16 vendorId; + u16 productId; +}; + inline constexpr auto hid_enumerated_device_default = -1; -extern std::vector g_android_usb_devices; +extern std::vector g_android_usb_devices; extern std::mutex g_android_usb_devices_mutex; #else using hid_enumerated_device_type = std::string;