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
This commit is contained in:
Carlos Garnacho 2017-06-29 23:42:43 +02:00
parent c02638e614
commit 2df1bd3dda

View File

@ -971,6 +971,7 @@ _clutter_stage_process_queued_events (ClutterStage *stage)
ClutterEvent *next_event; ClutterEvent *next_event;
ClutterInputDevice *device; ClutterInputDevice *device;
ClutterInputDevice *next_device; ClutterInputDevice *next_device;
ClutterInputDeviceType device_type;
gboolean check_device = FALSE; gboolean check_device = FALSE;
event = l->data; event = l->data;
@ -986,8 +987,16 @@ _clutter_stage_process_queued_events (ClutterStage *stage)
if (device != NULL && next_device != NULL) if (device != NULL && next_device != NULL)
check_device = TRUE; check_device = TRUE;
/* Skip consecutive motion events coming from the same device */ device_type = clutter_input_device_get_device_type (device);
if (priv->throttle_motion_events && next_event != NULL)
/* 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 && if (event->type == CLUTTER_MOTION &&
(next_event->type == CLUTTER_MOTION || (next_event->type == CLUTTER_MOTION ||