stage: implement touch event throttling

https://bugzilla.gnome.org/show_bug.cgi?id=709761
This commit is contained in:
Lionel Landwerlin 2013-10-09 18:35:59 +01:00
parent 7ae3b32cf1
commit 90c05e98a8

View File

@ -921,19 +921,31 @@ _clutter_stage_process_queued_events (ClutterStage *stage)
check_device = TRUE; check_device = TRUE;
/* Skip consecutive motion events coming from the same device */ /* Skip consecutive motion events coming from the same device */
if (priv->throttle_motion_events && if (priv->throttle_motion_events && next_event != NULL)
next_event != NULL && {
event->type == CLUTTER_MOTION && if (event->type == CLUTTER_MOTION &&
(next_event->type == CLUTTER_MOTION || (next_event->type == CLUTTER_MOTION ||
next_event->type == CLUTTER_LEAVE) && next_event->type == CLUTTER_LEAVE) &&
(!check_device || (device == next_device))) (!check_device || (device == next_device)))
{ {
CLUTTER_NOTE (EVENT, CLUTTER_NOTE (EVENT,
"Omitting motion event at %d, %d", "Omitting motion event at %d, %d",
(int) event->motion.x, (int) event->motion.x,
(int) event->motion.y); (int) event->motion.y);
goto next_event; goto next_event;
} }
else if (event->type == CLUTTER_TOUCH_UPDATE &&
(next_event->type == CLUTTER_TOUCH_UPDATE ||
next_event->type == CLUTTER_LEAVE) &&
(!check_device || (device == next_device)))
{
CLUTTER_NOTE (EVENT,
"Omitting touch update event at %d, %d",
(int) event->touch.x,
(int) event->touch.y);
goto next_event;
}
}
_clutter_process_event (event); _clutter_process_event (event);