diff options
author | José Expósito <jose.exposito89@gmail.com> | 2022-03-27 19:07:25 +0200 |
---|---|---|
committer | José Expósito <jose.exposito89@gmail.com> | 2022-07-11 11:01:35 +0200 |
commit | add44b3e2e4ff7ef98b16813fb3c9e1d8b398008 (patch) | |
tree | 41a2c86b63c2983ec43a2357936dfbf56590c88e /include | |
parent | 40dc5121aa4cc76ed9a6ededd6ff56570c1a2e40 (diff) |
seat: support low-resolution clients
When the client doesn't support high-resolution scroll, accumulate
deltas until we can notify a discrete event.
Some mice have a free spinning wheel, making possible to lock the wheel
when the accumulator value is not 0. To avoid synchronization issues
between the mouse wheel and the accumulators, store the last delta and
when the scroll direction changes, reset the accumulator.
Diffstat (limited to 'include')
-rw-r--r-- | include/wlr/types/wlr_seat.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/wlr/types/wlr_seat.h b/include/wlr/types/wlr_seat.h index 8c1d4661..d1984449 100644 --- a/include/wlr/types/wlr_seat.h +++ b/include/wlr/types/wlr_seat.h @@ -54,6 +54,19 @@ struct wlr_seat_client { // for use by wlr_seat_client_{next_serial,validate_event_serial} struct wlr_serial_ringset serials; bool needs_touch_frame; + + // When the client doesn't support high-resolution scroll, accumulate deltas + // until we can notify a discrete event. + // Some mice have a free spinning wheel, making possible to lock the wheel + // when the accumulator value is not 0. To avoid synchronization issues + // between the mouse wheel and the accumulators, store the last delta and + // when the scroll direction changes, reset the accumulator. + // Indexed by wlr_axis_orientation. + struct { + int32_t acc_discrete[2]; + int32_t last_discrete[2]; + double acc_axis[2]; + } value120; }; struct wlr_touch_point { |