From 11b8600a15fef3c9ee4f3821ebbccbe59c152ba2 Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Thu, 14 Feb 2013 14:51:33 -0500 Subject: [PATCH] Don't compress motion events for different devices A switch of device may be significant for an application, so don't compress motion events if they are for different devices. This simple handling isn't sufficient if we have competing event streams from two different pointer events, but we don't expect this case to be common. --- gdk/gdkevents.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 8e05a8edcd..4a9d0b965a 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -268,6 +268,7 @@ _gdk_event_queue_handle_motion_compression (GdkDisplay *display) GList *tmp_list; GList *pending_motions = NULL; GdkWindow *pending_motion_window = NULL; + GdkDevice *pending_motion_device = NULL; /* If the last N events in the event queue are motion notify * events for the same window, drop all but the last */ @@ -288,7 +289,12 @@ _gdk_event_queue_handle_motion_compression (GdkDisplay *display) pending_motion_window != event->event.motion.window) break; + if (pending_motion_device != NULL && + pending_motion_device != event->event.motion.device) + break; + pending_motion_window = event->event.motion.window; + pending_motion_device = event->event.motion.device; pending_motions = tmp_list; tmp_list = tmp_list->prev;