From a70ae50ca9b9154b52d92826479ca29842487c15 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 29 Jun 2017 23:42:43 +0200 Subject: [PATCH] clutter: Do not throttle motion events on tablet tools Events from tablets must not be filtered out, as the event coalescing results in precision loss. https://bugzilla.gnome.org/show_bug.cgi?id=783535 --- clutter/clutter/clutter-stage.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c index a3ee0010c..d1dfdd240 100644 --- a/clutter/clutter/clutter-stage.c +++ b/clutter/clutter/clutter-stage.c @@ -962,6 +962,7 @@ _clutter_stage_process_queued_events (ClutterStage *stage) ClutterEvent *next_event; ClutterInputDevice *device; ClutterInputDevice *next_device; + ClutterInputDeviceType device_type; gboolean check_device = FALSE; event = l->data; @@ -977,8 +978,16 @@ _clutter_stage_process_queued_events (ClutterStage *stage) if (device != NULL && next_device != NULL) check_device = TRUE; - /* Skip consecutive motion events coming from the same device */ - if (priv->throttle_motion_events && next_event != NULL) + device_type = clutter_input_device_get_device_type (device); + + /* Skip consecutive motion events coming from the same device, + * except those of tablet tools, since users of these events + * want no precision loss. + */ + if (priv->throttle_motion_events && next_event != NULL && + device_type != CLUTTER_TABLET_DEVICE && + device_type != CLUTTER_PEN_DEVICE && + device_type != CLUTTER_ERASER_DEVICE) { if (event->type == CLUTTER_MOTION && (next_event->type == CLUTTER_MOTION ||