mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-20 05:50:04 +01:00
dix: fix wheel emulation lockup when a negative increment is set
The increment sign wasn't taking into account when checking if the next value is past our current value. The result was that for negative increments, we kept looping indefinitely, locking up the server. Easiest to reproduce with the evdev driver which has a negative increment on the y axis. Fixes0a22502c34dix: switch scroll button emulation to multiples of increment Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commitd2158d4063)
This commit is contained in:
parent
30069ced5d
commit
92c54bea28
1 changed files with 3 additions and 3 deletions
|
|
@ -1607,9 +1607,9 @@ emulate_scroll_button_events(InternalEvent *events,
|
|||
/* The next value we want to send out a button event for */
|
||||
double next_val = last_scroll_val + direction * incr;
|
||||
|
||||
if ((direction > 0 && next_val > current_val) ||
|
||||
(direction < 0 && next_val < current_val))
|
||||
break;
|
||||
if ((((direction > 0 && incr > 0) || (direction < 0 && incr < 0)) && (next_val > current_val)) ||
|
||||
(((direction > 0 && incr < 0) || (direction < 0 && incr > 0)) && (next_val < current_val)))
|
||||
break;
|
||||
|
||||
/* fill_pointer_events() generates four events: one normal and one raw
|
||||
* event for button press and button release.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue