[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