https://bugs.winehq.org/show_bug.cgi?id=52841
--- Comment #2 from Nam Nguyen namtsui@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.