Lines Matching refs:dispatch

67 log_wheel_bug(struct fallback_dispatch *dispatch, enum wheel_event event)
69 evdev_log_bug_libinput(dispatch->device,
72 wheel_state_to_str(dispatch->wheel.state));
76 wheel_set_scroll_timer(struct fallback_dispatch *dispatch, uint64_t time)
78 libinput_timer_set(&dispatch->wheel.scroll_timer,
83 wheel_cancel_scroll_timer(struct fallback_dispatch *dispatch)
85 libinput_timer_cancel(&dispatch->wheel.scroll_timer);
89 wheel_handle_event_on_state_none(struct fallback_dispatch *dispatch,
95 dispatch->wheel.state = WHEEL_STATE_ACCUMULATING_SCROLL;
101 log_wheel_bug(dispatch, event);
107 wheel_handle_event_on_state_accumulating_scroll(struct fallback_dispatch *dispatch,
113 dispatch->wheel.state = WHEEL_STATE_SCROLLING;
114 wheel_set_scroll_timer(dispatch, time);
120 dispatch->wheel.state = WHEEL_STATE_NONE;
123 log_wheel_bug(dispatch, event);
129 wheel_handle_event_on_state_scrolling(struct fallback_dispatch *dispatch,
135 wheel_cancel_scroll_timer(dispatch);
136 wheel_set_scroll_timer(dispatch, time);
139 dispatch->wheel.state = WHEEL_STATE_NONE;
142 wheel_cancel_scroll_timer(dispatch);
143 dispatch->wheel.state = WHEEL_STATE_NONE;
146 log_wheel_bug(dispatch, event);
152 wheel_handle_event(struct fallback_dispatch *dispatch,
156 enum wheel_state oldstate = dispatch->wheel.state;
160 wheel_handle_event_on_state_none(dispatch, event, time);
163 wheel_handle_event_on_state_accumulating_scroll(dispatch,
168 wheel_handle_event_on_state_scrolling(dispatch, event, time);
172 if (oldstate != dispatch->wheel.state) {
173 evdev_log_debug(dispatch->device,
177 wheel_state_to_str(dispatch->wheel.state));
182 wheel_flush_scroll(struct fallback_dispatch *dispatch,
195 .x = dispatch->wheel.lo_res.x,
196 .y = dispatch->wheel.lo_res.y * -1,
207 dispatch->wheel.hi_res.x = 0;
208 dispatch->wheel.hi_res.y = 0;
209 dispatch->wheel.lo_res.x = 0;
210 dispatch->wheel.lo_res.y = 0;
215 if (dispatch->wheel.hi_res.y != 0) {
216 int value = dispatch->wheel.hi_res.y;
226 dispatch->wheel.hi_res.y = 0;
229 if (dispatch->wheel.lo_res.y != 0) {
230 int value = dispatch->wheel.lo_res.y;
240 dispatch->wheel.lo_res.y = 0;
243 if (dispatch->wheel.hi_res.x != 0) {
244 int value = dispatch->wheel.hi_res.x;
254 dispatch->wheel.hi_res.x = 0;
257 if (dispatch->wheel.lo_res.x != 0) {
258 int value = dispatch->wheel.lo_res.x;
268 dispatch->wheel.lo_res.x = 0;
273 wheel_handle_state_none(struct fallback_dispatch *dispatch,
281 wheel_handle_state_accumulating_scroll(struct fallback_dispatch *dispatch,
285 if (abs(dispatch->wheel.hi_res.x) >= ACC_V120_THRESHOLD ||
286 abs(dispatch->wheel.hi_res.y) >= ACC_V120_THRESHOLD) {
287 wheel_handle_event(dispatch,
290 wheel_flush_scroll(dispatch, device, time);
295 wheel_handle_state_scrolling(struct fallback_dispatch *dispatch,
299 wheel_flush_scroll(dispatch, device, time);
303 wheel_handle_direction_change(struct fallback_dispatch *dispatch,
318 if (new_dir != WHEEL_DIR_UNKNOW && new_dir != dispatch->wheel.dir) {
319 dispatch->wheel.dir = new_dir;
320 wheel_handle_event(dispatch,
327 fallback_rotate_wheel(struct fallback_dispatch *dispatch,
335 if (dispatch->rotation.angle >= 160.0 &&
336 dispatch->rotation.angle <= 220.0) {
342 fallback_wheel_process_relative(struct fallback_dispatch *dispatch,
348 fallback_rotate_wheel(dispatch, device, e);
349 dispatch->wheel.lo_res.y += e->value;
350 if (dispatch->wheel.emulate_hi_res_wheel)
351 dispatch->wheel.hi_res.y += e->value * 120;
352 dispatch->pending_event |= EVDEV_WHEEL;
353 wheel_handle_event(dispatch, WHEEL_EVENT_SCROLL, time);
356 fallback_rotate_wheel(dispatch, device, e);
357 dispatch->wheel.lo_res.x += e->value;
358 if (dispatch->wheel.emulate_hi_res_wheel)
359 dispatch->wheel.hi_res.x += e->value * 120;
360 dispatch->pending_event |= EVDEV_WHEEL;
361 wheel_handle_event(dispatch, WHEEL_EVENT_SCROLL, time);
364 fallback_rotate_wheel(dispatch, device, e);
365 dispatch->wheel.hi_res.y += e->value;
366 dispatch->wheel.hi_res_event_received = true;
367 dispatch->pending_event |= EVDEV_WHEEL;
368 wheel_handle_direction_change(dispatch, e, time);
369 wheel_handle_event(dispatch, WHEEL_EVENT_SCROLL, time);
372 fallback_rotate_wheel(dispatch, device, e);
373 dispatch->wheel.hi_res.x += e->value;
374 dispatch->wheel.hi_res_event_received = true;
375 dispatch->pending_event |= EVDEV_WHEEL;
376 wheel_handle_direction_change(dispatch, e, time);
377 wheel_handle_event(dispatch, WHEEL_EVENT_SCROLL, time);
383 fallback_wheel_handle_state(struct fallback_dispatch *dispatch,
390 if (!dispatch->wheel.emulate_hi_res_wheel &&
391 !dispatch->wheel.hi_res_event_received &&
392 (dispatch->wheel.lo_res.x != 0 || dispatch->wheel.lo_res.y != 0)) {
397 dispatch->wheel.emulate_hi_res_wheel = true;
398 dispatch->wheel.hi_res.x = dispatch->wheel.lo_res.x * 120;
399 dispatch->wheel.hi_res.y = dispatch->wheel.lo_res.y * 120;
402 switch (dispatch->wheel.state) {
404 wheel_handle_state_none(dispatch, device, time);
407 wheel_handle_state_accumulating_scroll(dispatch, device, time);
410 wheel_handle_state_scrolling(dispatch, device, time);
419 struct fallback_dispatch *dispatch =
420 fallback_dispatch(device->dispatch);
422 wheel_handle_event(dispatch, WHEEL_EVENT_SCROLL_TIMEOUT, now);
426 fallback_init_wheel(struct fallback_dispatch *dispatch,
431 dispatch->wheel.state = WHEEL_STATE_NONE;
432 dispatch->wheel.dir = WHEEL_DIR_UNKNOW;
448 dispatch->wheel.emulate_hi_res_wheel = true;
454 libinput_timer_init(&dispatch->wheel.scroll_timer,