wayland: Improve checks when flushing scroll events

If we get gdk_wayland_seat_flush_frame_event() with no previous event to be
flushed, we fallback into the scroll event checks. However, there's no check
performed there as to whether it really scrolled, so it'd always send a smooth
scroll event with 0/0 deltas in this case.

This should be mostly harmless, but still, we should only end up emitting scroll
events if those really happened.
This commit is contained in:
Carlos Garnacho 2016-04-18 14:10:49 +01:00
parent bfcd9a2193
commit f7108d4d43

View File

@ -1142,8 +1142,14 @@ flush_scroll_event (GdkWaylandSeat *seat,
direction = GDK_SCROLL_DOWN; direction = GDK_SCROLL_DOWN;
flush_discrete_scroll_event (seat, direction); flush_discrete_scroll_event (seat, direction);
pointer_frame->discrete_x = 0;
pointer_frame->discrete_y = 0;
} }
if (pointer_frame->is_scroll_stop ||
pointer_frame->delta_x != 0 ||
pointer_frame->delta_y != 0)
{
/* Axes can stop independently, if we stop on one axis but have a /* Axes can stop independently, if we stop on one axis but have a
* delta on the other, we don't count it as a stop event. * delta on the other, we don't count it as a stop event.
*/ */
@ -1159,9 +1165,8 @@ flush_scroll_event (GdkWaylandSeat *seat,
pointer_frame->delta_x = 0; pointer_frame->delta_x = 0;
pointer_frame->delta_y = 0; pointer_frame->delta_y = 0;
pointer_frame->discrete_x = 0;
pointer_frame->discrete_y = 0;
pointer_frame->is_scroll_stop = FALSE; pointer_frame->is_scroll_stop = FALSE;
}
} }
static void static void