On Fri Aug 8 12:08:40 2025 +0000, Rémi Bernon wrote:
> The evdev and SDL backends suffer from impedence mismatch and they
> cannot work identically to hidraw on every possible device. You should
> use hidraw with your device, and every time it is supported, and evdev /
> SDL for every other devices where it's not.
> Then making sure evdev / SDL works best for devices without the hidraw
> alternative is more important than making all the backends work
> similarly for devices which can already be used with hidraw.
Right. That makes sense. I don't think, however, that this merge request makes any devices work better. Instead I believe it just breaks `DIPROP_AUTOCENTER` support in a lot of cases.
Specifically, wrt to devices that hidraw doesn't work (e.g., so UDEV (input) or SDL are the only option) I expect
* all non-HID driver devices for which the kernel driver supported autocenter (e.g., the I-FORCE) are now broken wrt `DIPROP_AUTOCENTER` for all buses
with respect to devices where hidraw wouldn't work with autocenter, but UDEV (input) or SDL would (e.g., devices that that don't turn autocenter on on reset and off on stop all effects)
* all HID non-pidff driver devices for which the kernel driver support autocenter (e.g., the Logitech WingMan Force) are now broken wrt `DIPROP_AUTOCENTER` for all buses
and with respect to devices where hidraw does work with autocenter (e.g., devices that do turn autocenter on on reset and off on stop all effects
* all HID pdiff driver devices for which the kernel driver supported autocenter (e.g., the USB Sidewinder 2) are broken wrt `DIPROP_AUTOCENTER` for all buses but hidraw
Unfortunately I don't have any of these devices to test apart for the USB Sidewinder 2 to prove this. The best I could do was to do was write a [test program](https://github.com/twhitehead/issue-wine-ff-autocenter) so people with them could check. It sounds like @TomaszPakula has some wheels to test. And perhaps @JacKeTUs has some non-HID devices to test too or knows someone who does? I would really appreciate it if everyone could test their device as, if I am correct, there is a lot of breakage here.
The only two things I see it _fixing_ is when autocenter is desired to be off and
* the program assumes `DIPROP_AUTOCENTER` is off by default (which it wasn't under Wine), doesn't check or set it, and so winds up with it on,
* the kernel driver claims autocenter support but doesn't actually support disabling it so it gets enabled (on the internal reset) and then winds up stuck on despite being told to turn off (on the internal stop all effects).
Of course, if either of these circumstances exist, this doesn't really fix anything. It just switches the breakage from permanently on to permanently off. Hence the italics.
My expectation is that this merge request originated out of the first of these. That is easy to fix once verified (please run the test program!), and I would be happy to put together a merge request for it. With regard to the second, if such drivers exist, it a kernel driver bug and needs to be fixed there (or, worst case, an if statement can be be added to Wine to disable autocenter support under UDEV (input) and SDL only for only that device).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8605#note_112517
If a session is shutdown when its command_state is already COMPLETE,
session_handle_source_shutdown calls session_set_stopped, which calls
session_command_complete which will submit the op at the head of commands again,
despite it having already been submitted.
Given that only the op at the head of commands can be in the submitted state,
tracking it as a command state makes more sense to me. And if the command state
is SUBMITTED we know not to submit the op again.
* * *
Superceded !8270
--
v2: Apply 3 suggestion(s) to 1 file(s)
https://gitlab.winehq.org/wine/wine/-/merge_requests/8722
`BluetoothLEAdvertisementWatcher` is required for LE device discovery on WinRT. Several WinRT apps, like Zwift will try getting this interface, and crash if they are not able to.
--
v4: windows.devices.bluetooth: Implement BluetoothLEAdvertisementWatcher::get_{Min, Max}OutOfRangeTimeout.
windows.devices.bluetooth: Implement BluetoothLEAdvertisementWatcher::get_{Min, Max}SamplingInterval.
windows.devices.bluetooth: Add stubs for BluetoothLEAdvertisementWatcher.
windows.devices.bluetooth/tests: Add tests for IBluetoothLEAdvertisementWatcher.
windows.devices.bluetooth/tests: Add tests for BluetoothLEAdvertisementDataSection.
windows.devices.bluetooth/tests: Add tests for IBluetoothLEAdvertisementBytePattern.
windows.devices.bluetooth/tests: Add tests for BluetoothLEAdvertisementFilter.
include: Add windows.devices.bluetooth.advertisement.idl.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8654