On Fri Aug 8 21:48:51 2025 +0000, Tyson Whitehead wrote:
> 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, or
> * 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 shuffles the breakage between on and 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 for only
> that device).
Nothing is broken, the autocenter is just left to the drivers. The autocenter philosphy is very different on Linux vs windows where Setting an autocenter effect outside of the main program is a valid use-case. Linux doesn't even have a notion of acquiring FFB devices and you're free to send in effects from different.
Yes, this change fixes the behavior of a lot of ffb devices for a lot of users, as can be seen here: https://github.com/ValveSoftware/Proton/issues/8395
Until we have a better Linux ffb api that's closer to the functionality of full PID protocol/dinput ffb api this is the best compromise. If you truly, really, just have to have autocenter on reset without using hidraw, please make an issue in the `hid-universal-pidff` development repository and we could upstream it. We're already tracking the number of effects and we could enable autocenter when there are none.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8605#note_112532
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