diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2015-04-24 15:26:17 +0800 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2015-11-20 11:52:19 +0800 |
commit | 8283c343ec0b21c88edc7dbfaafbc2ed53d78d61 (patch) | |
tree | ff1ac651aeff2429d21b755f03d135b9c64360be | |
parent | d2510105a6e411790f3d5bd3acd1e0d0e295ff06 (diff) | |
download | weston-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.c | 12 |
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); + } } } |