[PATCH 4/4] winebus.sys: Remove the now useless is_xbox_gamepad helper.
Rémi Bernon
rbernon at codeweavers.com
Fri Sep 10 02:19:56 CDT 2021
Native XBox controllers should now be listed in winexinput.inf, and the
axis or button checks should be enough to set the compatible id anyway.
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/winebus.sys/bus.h | 2 --
dlls/winebus.sys/bus_iohid.c | 56 ++++++++++++++++--------------------
dlls/winebus.sys/bus_udev.c | 13 ++-------
dlls/winebus.sys/main.c | 13 ---------
4 files changed, 28 insertions(+), 56 deletions(-)
diff --git a/dlls/winebus.sys/bus.h b/dlls/winebus.sys/bus.h
index 75ff218c26d..c9af7cea1f0 100644
--- a/dlls/winebus.sys/bus.h
+++ b/dlls/winebus.sys/bus.h
@@ -34,6 +34,4 @@ DEVICE_OBJECT *bus_find_hid_device(const WCHAR *bus_id, void *platform_dev) DECL
void process_hid_report(DEVICE_OBJECT *device, BYTE *report, DWORD length) DECLSPEC_HIDDEN;
/* General Bus Functions */
-BOOL is_xbox_gamepad(WORD vid, WORD pid) DECLSPEC_HIDDEN;
-
extern HANDLE driver_key DECLSPEC_HIDDEN;
diff --git a/dlls/winebus.sys/bus_iohid.c b/dlls/winebus.sys/bus_iohid.c
index 61758304837..fd80af8f29f 100644
--- a/dlls/winebus.sys/bus_iohid.c
+++ b/dlls/winebus.sys/bus_iohid.c
@@ -315,46 +315,40 @@ static void handle_DeviceMatchingCallback(void *context, IOReturn result, void *
if (IOHIDDeviceConformsTo(IOHIDDevice, kHIDPage_GenericDesktop, kHIDUsage_GD_GamePad) ||
IOHIDDeviceConformsTo(IOHIDDevice, kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick))
{
- if (is_xbox_gamepad(desc.vid, desc.pid))
- desc.is_gamepad = TRUE;
- else
+ int axes = 0, buttons = 0;
+ CFArrayRef element_array = IOHIDDeviceCopyMatchingElements(IOHIDDevice, NULL, kIOHIDOptionsTypeNone);
+
+ if (element_array)
{
- int axes=0, buttons=0;
- CFArrayRef element_array = IOHIDDeviceCopyMatchingElements(
- IOHIDDevice, NULL, kIOHIDOptionsTypeNone);
-
- if (element_array) {
- CFIndex index;
- CFIndex count = CFArrayGetCount(element_array);
- for (index = 0; index < count; index++)
+ CFIndex index;
+ CFIndex count = CFArrayGetCount(element_array);
+ for (index = 0; index < count; index++)
+ {
+ IOHIDElementRef element = (IOHIDElementRef)CFArrayGetValueAtIndex(element_array, index);
+ if (element)
{
- IOHIDElementRef element = (IOHIDElementRef)CFArrayGetValueAtIndex(element_array, index);
- if (element)
+ int type = IOHIDElementGetType(element);
+ if (type == kIOHIDElementTypeInput_Button) buttons++;
+ if (type == kIOHIDElementTypeInput_Axis) axes++;
+ if (type == kIOHIDElementTypeInput_Misc)
{
- int type = IOHIDElementGetType(element);
- if (type == kIOHIDElementTypeInput_Button) buttons++;
- if (type == kIOHIDElementTypeInput_Axis) axes++;
- if (type == kIOHIDElementTypeInput_Misc)
+ uint32_t usage = IOHIDElementGetUsage(element);
+ switch (usage)
{
- uint32_t usage = IOHIDElementGetUsage(element);
- switch (usage)
- {
- case kHIDUsage_GD_X:
- case kHIDUsage_GD_Y:
- case kHIDUsage_GD_Z:
- case kHIDUsage_GD_Rx:
- case kHIDUsage_GD_Ry:
- case kHIDUsage_GD_Rz:
- case kHIDUsage_GD_Slider:
- axes ++;
- }
+ case kHIDUsage_GD_X:
+ case kHIDUsage_GD_Y:
+ case kHIDUsage_GD_Z:
+ case kHIDUsage_GD_Rx:
+ case kHIDUsage_GD_Ry:
+ case kHIDUsage_GD_Rz:
+ case kHIDUsage_GD_Slider: axes++;
}
}
}
- CFRelease(element_array);
}
- desc.is_gamepad = (axes == 6 && buttons >= 14);
+ CFRelease(element_array);
}
+ desc.is_gamepad = (axes == 6 && buttons >= 14);
}
TRACE("dev %p, desc %s.\n", IOHIDDevice, debugstr_device_desc(&desc));
diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c
index 78e74de842a..d650dd2ba3e 100644
--- a/dlls/winebus.sys/bus_udev.c
+++ b/dlls/winebus.sys/bus_udev.c
@@ -1138,6 +1138,7 @@ static void udev_add_device(struct udev_device *dev)
else if (!strcmp(subsystem, "input"))
{
struct input_id device_id = {0};
+ int axes = 0, buttons = 0;
char device_uid[255];
desc.busid = lnxev_busidW;
@@ -1154,23 +1155,15 @@ static void udev_add_device(struct udev_device *dev)
device_uid[0] = 0;
if (ioctl(fd, EVIOCGUNIQ(254), device_uid) >= 0 && device_uid[0])
MultiByteToWideChar(CP_UNIXCP, 0, device_uid, -1, desc.serial, ARRAY_SIZE(desc.serial));
- }
-#endif
- if (!desc.serial[0]) lstrcpyW(desc.serial, base_serial);
-
- if (is_xbox_gamepad(desc.vid, desc.pid))
- desc.is_gamepad = TRUE;
-#ifdef HAS_PROPER_INPUT_HEADER
- else
- {
- int axes=0, buttons=0;
axes = count_abs_axis(fd);
buttons = count_buttons(fd, NULL);
desc.is_gamepad = (axes == 6 && buttons >= 14);
}
#endif
+ if (!desc.serial[0]) lstrcpyW(desc.serial, base_serial);
+
TRACE("dev %p, node %s, desc %s.\n", dev, debugstr_a(devnode), debugstr_device_desc(&desc));
if (strcmp(subsystem, "hidraw") == 0)
diff --git a/dlls/winebus.sys/main.c b/dlls/winebus.sys/main.c
index 65385055729..c505ff3a1f0 100644
--- a/dlls/winebus.sys/main.c
+++ b/dlls/winebus.sys/main.c
@@ -1094,19 +1094,6 @@ void process_hid_report(DEVICE_OBJECT *device, BYTE *report, DWORD length)
LeaveCriticalSection(&ext->cs);
}
-BOOL is_xbox_gamepad(WORD vid, WORD pid)
-{
- int i;
-
- if (vid != VID_MICROSOFT)
- return FALSE;
-
- for (i = 0; i < ARRAY_SIZE(XBOX_CONTROLLERS); i++)
- if (pid == XBOX_CONTROLLERS[i].pid) return TRUE;
-
- return FALSE;
-}
-
static NTSTATUS WINAPI driver_add_device(DRIVER_OBJECT *driver, DEVICE_OBJECT *pdo)
{
NTSTATUS ret;
--
2.33.0
More information about the wine-devel
mailing list