[Bug 52841] New: leverless arcade controller SOCD cleaning regression
https://bugs.winehq.org/show_bug.cgi?id=52841 Bug ID: 52841 Summary: leverless arcade controller SOCD cleaning regression Product: Wine Version: 7.0 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs(a)winehq.org Reporter: namtsui(a)gmail.com Distribution: --- Created attachment 72236 --> https://bugs.winehq.org/attachment.cgi?id=72236 fix downstream bug: https://github.com/ValveSoftware/Proton/issues/5527 There is a regression in wine SDL. I tested wine 7.0 using Linux 5.17.2. I think this is the commit to blame: https://github.com/wine-mirror/wine/commit/9cf1e8353cf05af1009e3e5d40b62f0e7... See the file: wine-7.0/dlls/winebus.sys/bus_sdl.c https://github.com/wine-mirror/wine/blob/6d4ec1255acceec7152ed98764ee29991ac... Leverless arcade controllers have all-buttons. One such controller is the hitbox controller from the company hitbox. It has four directional buttons mapped to DPAD. It has simultaneous opposite cardinal direction (SOCD) cleaning. If you hold down + up, it should output up. If you hold left + right, it should output nothing at all (neutral). I added print statements. See the attached fix. In clip 1, I demonstrate SDL2 events when down and up are held simultaneously during a jump for a while: hold down (DOWN press event) hold up (DOWN release event. UP press event.) hold both for a while release all (UP release event. DOWN release event.) [1] https://clips.twitch.tv/PlausibleSparklingButterJonCarnage-1nJQjUmS_kATb5Y6 In clip 2 the actual bug is shown. hold down (DOWN press event) press up (DOWN release event. UP press event.) steps 1 to 2 were demonstrated in clip 1. release up (DOWN press event. UP release event.) keep holding down [2] https://clips.twitch.tv/FunnyPlayfulClintmullinsArgieB8-p3pUOVQuS-eA8oqi The UP release event at the end in step 3 causes the axis to be reset to 0. This ignores the DOWN press event immediately preceding it. Clip 3 shows after the proposed fix is applied. [3] https://clips.twitch.tv/RacyNeighborlyCookiePeteZaroll-2wwLnflwjAa3ZlFz -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=52841 Austin English <austinenglish(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |hardware, patch, regression CC| |rbernon(a)codeweavers.com Regression SHA1| |9cf1e8353cf05af1009e3e5d40b | |62f0e70761f3f -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=52841 Gijs Vermeulen <gijsvrm(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |hid Summary|leverless arcade controller |Leverless arcade controller |SOCD cleaning regression |SOCD cleaning does not work --- Comment #1 from Gijs Vermeulen <gijsvrm(a)gmail.com> --- Could you try with wine-7.9 to make sure the regression in still present? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=52841 --- Comment #2 from Nam Nguyen <namtsui(a)gmail.com> --- I tested wine 7.10, and the regression is still present. I attached a fresh proposed fix that applies cleanly to 7.10. One detail I forgot to include was that there are at least two forms of SOCD cleaning. Horizontal axis: Last input wins and left + right = neutral. Vertical axis: down + up = up With last input wins: hold left then hold right. the controller will output right, even though both left and right are held. hold right then hold left. the controller will output left, even though "" With left + right = neutral: hold left then hold right. neutral is output. hold right then hold left. neutral is output. My hitbox controller has left + right = neutral style. My hitbox controller also has down + up = up. I don't have a way to test for last input wins, but my patch attempts to account for all these variants. The patch makes sure that release event on a button does not just reset to 0 without checking the opposite direction first. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=52841 --- Comment #3 from Nam Nguyen <namtsui(a)gmail.com> --- Created attachment 72557 --> https://bugs.winehq.org/attachment.cgi?id=72557 fix 7.10 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=52841 --- Comment #4 from Rémi Bernon <rbernon(a)codeweavers.com> --- Created attachment 72558 --> https://bugs.winehq.org/attachment.cgi?id=72558 Alternative fix. Hi, thanks for the report and the patch, and sorry for the delay. Would something like the attached patch work too? I think it'd be a bit simpler. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=52841 --- Comment #5 from Nam Nguyen <namtsui(a)gmail.com> --- (In reply to Rémi Bernon from comment #4)
Created attachment 72558 [details] Alternative fix.
Hi, thanks for the report and the patch, and sorry for the delay. Would something like the attached patch work too? I think it'd be a bit simpler.
No worries on the delay. Thank you for the fix. Your fix resolves the issue. I have tested it on my controller which does down+up = up and left+right = neutral on wine 7.10. I am not able to test last input wins, but it sounds like it could work. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=52841 Rémi Bernon <rbernon(a)codeweavers.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Fixed by SHA1| |e2936702a47247f806478f16d46 | |31516ca2c3e9f Status|UNCONFIRMED |RESOLVED --- Comment #6 from Rémi Bernon <rbernon(a)codeweavers.com> --- I believe this is fixed after e2936702a47247f806478f16d4631516ca2c3e9f. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=52841 Alexandre Julliard <julliard(a)winehq.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED --- Comment #7 from Alexandre Julliard <julliard(a)winehq.org> --- Closing bugs fixed in 7.11. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=52841 Michael Stefaniuc <mstefani(a)winehq.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |7.0.x -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=52841 Michael Stefaniuc <mstefani(a)winehq.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|7.0.x |--- --- Comment #8 from Michael Stefaniuc <mstefani(a)winehq.org> --- Removing the 7.0.x milestone from bug fixes included in 7.0.2. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla