[PATCH weston v2 2/4] input: Add weston_pointer_clamp function to ensure pointer visible

Rob Bradford robert.bradford at intel.com
Tue Jun 25 10:56:41 PDT 2013


From: Rob Bradford <rob at linux.intel.com>

This refactors the code out from clip_pointer_motion into a function of
its own which can then be used elsewhere to clamp the pointer
coordinates to the range of the outputs.

This change also makes the caller of clip_pointer_motion use this new
function.
---
 src/compositor.h |  3 +++
 src/input.c      | 12 ++++++------
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/compositor.h b/src/compositor.h
index 3206e45..45a14d6 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -345,6 +345,9 @@ weston_pointer_start_grab(struct weston_pointer *pointer,
 			  struct weston_pointer_grab *grab);
 void
 weston_pointer_end_grab(struct weston_pointer *pointer);
+void
+weston_pointer_clamp(struct weston_pointer *pointer,
+			    wl_fixed_t *fx, wl_fixed_t *fy);
 
 struct weston_keyboard *
 weston_keyboard_create(void);
diff --git a/src/input.c b/src/input.c
index ad4512d..6d17bc4 100644
--- a/src/input.c
+++ b/src/input.c
@@ -562,17 +562,17 @@ weston_touch_end_grab(struct weston_touch *touch)
 	touch->grab = &touch->default_grab;
 }
 
-static void
-clip_pointer_motion(struct weston_seat *seat, wl_fixed_t *fx, wl_fixed_t *fy)
+WL_EXPORT void
+weston_pointer_clamp(struct weston_pointer *pointer, wl_fixed_t *fx, wl_fixed_t *fy)
 {
-	struct weston_compositor *ec = seat->compositor;
+	struct weston_compositor *ec = pointer->seat->compositor;
 	struct weston_output *output, *prev = NULL;
 	int x, y, old_x, old_y, valid = 0;
 
 	x = wl_fixed_to_int(*fx);
 	y = wl_fixed_to_int(*fy);
-	old_x = wl_fixed_to_int(seat->pointer->x);
-	old_y = wl_fixed_to_int(seat->pointer->y);
+	old_x = wl_fixed_to_int(pointer->x);
+	old_y = wl_fixed_to_int(pointer->y);
 
 	wl_list_for_each(output, &ec->output_list, link) {
 		if (pixman_region32_contains_point(&output->region,
@@ -606,7 +606,7 @@ move_pointer(struct weston_seat *seat, wl_fixed_t x, wl_fixed_t y)
 	struct weston_output *output;
 	int32_t ix, iy;
 
-	clip_pointer_motion(seat, &x, &y);
+	weston_pointer_clamp (pointer, &x, &y);
 
 	pointer->x = x;
 	pointer->y = y;
-- 
1.8.3.1



More information about the wayland-devel mailing list