mirror of
https://github.com/libretro/RetroArch.git
synced 2026-11-10 17:27:30 -10:00
A DualShock 3 on Sony's own driver, sixaxis.sys, or on DsHidMini in the mode that stands in for it, sends no input reports: its state is feature report 0, asked for. Under the raw input joypad driver such a pad showed up and did nothing. The driver's own thread now asks a DualShock 3 for that report every 4 ms and hands the newest to the poll through three buffers swapped with an atomic exchange; the poll lays it out as the pad's own HID description does - buttons 1 to 19, the sticks X, Y, Z and Rz - so a profile for the pad binds it. Its motors and player light go as that driver's commands. A DualShock 3 on Windows' own HID driver, which has not started it, has no report 0: it is asked once and left alone, and one whose input reports come after all is no longer asked. With no such pad nothing changes: the thread waits on wakes alone, and the poll looks at one counter. The writer thread's timed wait now goes through a high resolution waitable timer on Windows, where a short wait was otherwise a whole timer tick. winraw_joypad_sixaxis_test runs the driver under Wine with the pad's driver faked.