Instead of having the waveforms combined. This better matches what
Windows.Gaming.Input and Windows.Devices.Haptics are exposing, with one
SimpleHapticsController for each motor.
This will also simplify the declaration of left/right trigger motors.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
And use the same usages as for the axes themselves instead of generic
HID usages.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
And only keep previously set waveform intensity in the device state.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
There's some inconsistencies between the HID 1.22 specification and
HID usage names in Windows SDK headers. The headers use STOP for the
0x1001 usage name, and NULL for 0x1002, where the HID spec uses None for
the 0x1001 usage name and Stop for 0x1002.
Both are implicit waveforms anyway, and the HID usages aren't really
used anywhere, but their ordinal matters. The HID spec says that None
has ordinal 1, and Stop ordinal 2, and that Stop waveform can be used
to stop any previously started waveform. We are going to stick to that
and ignore the HID usages, although the names won't match the usages.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Checking for effect state updates periodically, as well as whenever the
device state changes but not more than once every 10ms.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52062
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Based on a Proton patch from Andrew Eikum <aeikum@codeweavers.com>.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Advertising support of the periodic effect types only for now.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
And include it in the HID report descriptor when SDL device has support
for any haptic effect, or when UDEV lnxev device has any FF bit set.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
For any device which requires building HID reports.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Instead of calling process_hid_report.
This adds a reference count on unix devices to make sure they are kept
alive until all their input report events have been processed.
This also uses a bus-specific device list, to be able to find devices
from joystick ids without having to call back to the win32 side.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
So we can stop the device when it's removed from the ntoskrnl.exe device
list, and then destroy it only when it's not referenced anymore.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Devices are only added from a single thread but they may be destroyed
concurrently so we need to guard the list against race conditions.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
And name the callbacks a bit more consistently.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>