summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2015-04-24 15:26:17 +0800
committerJonas Ådahl <jadahl@gmail.com>2015-11-20 11:52:19 +0800
commit8283c343ec0b21c88edc7dbfaafbc2ed53d78d61 (patch)
treeff1ac651aeff2429d21b755f03d135b9c64360be
parentd2510105a6e411790f3d5bd3acd1e0d0e295ff06 (diff)
downloadweston-8283c343ec0b21c88edc7dbfaafbc2ed53d78d61.tar.gz
input: Don't send wl_pointer.motion if position didn't change
Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--src/input.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/input.c b/src/input.c
index 53e84a08..86f96b51 100644
--- a/src/input.c
+++ b/src/input.c
@@ -173,6 +173,8 @@ default_grab_pointer_motion(struct weston_pointer_grab *grab, uint32_t time,
struct wl_list *resource_list;
struct wl_resource *resource;
wl_fixed_t x, y;
+ wl_fixed_t old_sx = pointer->sx;
+ wl_fixed_t old_sy = pointer->sy;
if (pointer->focus) {
weston_pointer_motion_to_abs(pointer, event, &x, &y);
@@ -182,10 +184,12 @@ default_grab_pointer_motion(struct weston_pointer_grab *grab, uint32_t time,
weston_pointer_move(pointer, event);
- resource_list = &pointer->focus_resource_list;
- wl_resource_for_each(resource, resource_list) {
- wl_pointer_send_motion(resource, time,
- pointer->sx, pointer->sy);
+ if (old_sx != pointer->sx || old_sy != pointer->sy) {
+ resource_list = &pointer->focus_resource_list;
+ wl_resource_for_each(resource, resource_list) {
+ wl_pointer_send_motion(resource, time,
+ pointer->sx, pointer->sy);
+ }
}
}