Commit Graph

1019 Commits

Author SHA1 Message Date
Rémi Bernon b725ccbd65 dinput: Look for PID axes enable collection and set DIEP_AXES if found.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 11:33:45 +02:00
Rémi Bernon 994fd9f761 dinput: Implement more of HID joystick IDirectInputDevice8_GetEffectInfo.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 11:33:40 +02:00
Rémi Bernon c436b54673 dinput: Look for the PID effect update output report.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 11:33:25 +02:00
Rémi Bernon ac0353653d dinput: Look for the PID effect control output report.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 11:01:58 +02:00
Rémi Bernon 4310b5accf dinput: Implement HID joystick IDirectInputDevice8_EnumCreatedEffectObjects.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 11:01:54 +02:00
Rémi Bernon f0c93375ef dinput: Keep a private ref to the device on created effects.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-04 11:01:52 +02:00
Rémi Bernon 4961876804 dinput: Implement HID joystick IDirectInputDevice8_CreateEffect stub.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 12:37:39 +02:00
Rémi Bernon 5b8daecabf dinput: Implement HID joystick IDirectInputDevice8_EnumEffects.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 12:37:35 +02:00
Rémi Bernon 84e586124c dinput: Send DISFFC_RESET command on HID joystick (Un)Acquire.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 12:37:32 +02:00
Rémi Bernon 9a9a1656c1 dinput: Start and cancel reading HID reports while holding the CS.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 12:37:28 +02:00
Rémi Bernon a382646e38 dinput: Implement hid_joystick_SendForceFeedbackCommand.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 12:37:24 +02:00
Rémi Bernon ff7685dea4 dinput: Look for the PID device control output report.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 12:37:20 +02:00
Rémi Bernon b33bece87e dinput: Stub hid_joystick force feedback methods.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 12:37:14 +02:00
Rémi Bernon 5d782424d8 dinput: Fix HID joystick DIDFT_POV enumeration.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-30 21:24:13 +02:00
Rémi Bernon e69f27d2ee dinput8/tests: Add some HID joystick IDirectInputDevice8_CreateEffect tests.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-30 21:23:23 +02:00
Tim Clem 5853f356b8 dinput: Lock around polling a HID device in joystick_osx.
If multiple threads try to read IOHIDElements and IOHIDValues from
the same IOHIDDevice simultaneously, we sometimes crash deep in
IOKit.

Fixes a crash in GTA 4 when using a PS4 controller.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-30 10:16:05 +02:00
Tim Clem c52645807b dinput: Factor out HID value retrieval in joystick_osx.
Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-30 10:16:03 +02:00
Rémi Bernon 8f1f061349 dinput: Simplify object enumeration by removing special cases.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-29 21:38:13 +02:00
Rémi Bernon 78207cf4d2 dinput: Enumerate output button objects in their declaration order.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-29 21:38:13 +02:00
Rémi Bernon b468349ec2 dinput: Enumerate HID joystick DIDFT_OUTPUT objects.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-29 21:38:13 +02:00
Rémi Bernon 58b632b863 dinput: Enumerate HID joystick objects using internal HID caps.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-29 21:38:13 +02:00
Rémi Bernon 81bef14324 dinput: Improve filtering of HID device state input report.
Make sure we only read input object from the device state input report
and only look for generic and button usage pages to find the report.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-29 21:38:13 +02:00
Rémi Bernon e4766cad6d dinput: Remove unusual HID joystick button count FIXMEs.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 10:06:46 +02:00
Rémi Bernon 5732347cbe dinput: Implement HID joystick DIPROP_AUTOCENTER property.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 10:06:44 +02:00
Rémi Bernon 5eb65418eb dinput: Implement HID joystick DIPROP_(DEADZONE|SATURATION|GRANULARITY).
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 10:06:42 +02:00
Rémi Bernon 9646873d63 dinput: Scale HID joystick axis values according to their center point.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 10:06:39 +02:00
Rémi Bernon 3886634c82 dinput: Reset the HID joystick state values on DIPROP_RANGE changes.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 10:06:36 +02:00
Rémi Bernon 844db6e53e dinput: Check that DIPROP_RANGE lMin and lMax are ordered.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 10:06:32 +02:00
Rémi Bernon 5d1f3baacd dinput: Return DIERR_UNSUPPORTED when reading DIPROP_RANGE with DIPH_DEVICE mode.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 10:06:27 +02:00
Rémi Bernon 50c1f45441 dinput: Return DIERR_NOTFOUND when DIPROP_RANGE object isn't found.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 10:06:22 +02:00
Rémi Bernon 42ba8f605d dinput: Compute HID joystick object offsets dynamically.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-27 17:34:43 +02:00
Rémi Bernon 85d7c56a83 dinput: Convert DIPH_BYOFFSET filter to use current data format offsets.
Instead of hardcoded DIJOYSTATE2 offsets.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-27 17:34:43 +02:00
Rémi Bernon e990e4b232 dinput: Return proper error status from HID joystick GetObjectInfo.
When no object matched the enumeration or when DIPH_DEVICE is used.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-27 17:34:43 +02:00
Rémi Bernon 1f8487e2f0 dinput: Enumerate all HID joystick objects at once.
Instead of using individual helpers.

The force-feedback EnumObjects test shows that we should enumerate the
output objects in their original order in the HID report descriptor, not
depending on their button/value nature.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-27 17:34:43 +02:00
Rémi Bernon d682b3a9d3 dinput: Use a custom HID joystick state instead of DIJOYSTATE2.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-27 17:34:43 +02:00
Rémi Bernon 6217705391 dinput: Open the WINEXINPUT interface when the override key is set.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-24 21:55:19 +02:00
Rémi Bernon 5c18aa58d3 dinput: Report HID joystick wheel usage as a Z axis.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 18:11:43 +02:00
Rémi Bernon a12b2dec4f dinput: Count all HID joystick button objects.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 18:11:33 +02:00
Rémi Bernon 1316142b62 dinput: Use fixed axis object instance number for common axes.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 18:11:29 +02:00
Rémi Bernon eab7819d7a dinput: Add an instance number to HID joystick collection objects.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 18:11:23 +02:00
Rémi Bernon aa60766259 dinput: Set HID joystick objects wCollectionNumber field.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 18:11:19 +02:00
Rémi Bernon 0686815ff6 dinput: Check acquired state in IDirectInputDevice2WImpl_SetCooperativeLevel.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 18:11:15 +02:00
Rémi Bernon 0e75722971 dinput: Check data format dwObjSize in IDirectInputDevice2WImpl_SetDataFormat.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 18:11:09 +02:00
Rémi Bernon 54b2fc3553 dinput: Return correct errors from HID joystick IDirectInputDevice8_Poll.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-21 11:41:47 +02:00
Rémi Bernon aa43d24cd8 dinput: Return correct errors from HID joystick IDirectInputDevice8_GetDeviceState.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-21 11:41:44 +02:00
Rémi Bernon 78f04ca082 dinput: Return correct errors from HID joystick IDirectInputDevice8_SetProperty.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-21 11:41:42 +02:00
Rémi Bernon b4dfa8ff7b dinput: Check sizes in HID joystick IDirectInputDevice8_GetProperty.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-21 11:41:37 +02:00
Rémi Bernon 0daf841712 dinput: Fix HID joystick DIPH_BYUSAGE object enumeration.
This adds some todo_wine because we now get the correct object, but it
has incorrect offset and instance number.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-21 11:41:30 +02:00
Rémi Bernon 7c4941d0ec dinput: Implement more accurate HID joystick device subtypes.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 22:45:49 +02:00
Rémi Bernon d47ec6502b dinput: Pass output instance to get_object_info HID joystick callback.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 22:45:49 +02:00