[PATCH 3/4] winebus.sys: Enable extended BT reports for Sony controllers when requested.

Arkadiusz Hiler ahiler at codeweavers.com
Fri Jan 21 10:10:43 CST 2022


SDL does that when calling SDL_GameControllerSetSensorEnabled() on
supported controllers.

This is a one-way transition, i.e. cannot be undone without re-plugging
the controller or rebooting.

Signed-off-by: Arkadiusz Hiler <ahiler at codeweavers.com>
---
 dlls/winebus.sys/bus_udev.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c
index c290cea6f4f..ea54e19df47 100644
--- a/dlls/winebus.sys/bus_udev.c
+++ b/dlls/winebus.sys/bus_udev.c
@@ -442,6 +442,17 @@ static void hidraw_device_get_feature_report(struct unix_device *iface, HID_XFER
     {
         io->Information = count;
         io->Status = STATUS_SUCCESS;
+
+        /* disable DS4 report quirk when we get calibration feature report */
+        if ((impl->quirks & QUIRK_DS4_BT) && packet->reportId == 0x5)
+            impl->quirks &= ~QUIRK_DS4_BT;
+
+        /* disable DualSense report quirk when we get calibration feature report */
+        if ((impl->quirks & QUIRK_DUALSENSE_BT) && packet->reportId == 0x5)
+        {
+            TRACE("unquirking dualsense\n");
+            impl->quirks &= ~QUIRK_DUALSENSE_BT;
+        }
     }
     else
     {
-- 
2.34.1




More information about the wine-devel mailing list