From 806d8c0b781e9702a93b90c366f7bebbd77a4860 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Tue, 25 Jun 2013 18:56:41 +0100 Subject: [PATCH] input: Add weston_pointer_clamp function to ensure pointer visible 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 7360dcb..004d063 100644 --- a/src/input.c +++ b/src/input.c @@ -561,17 +561,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, @@ -605,7 +605,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; -- 2.7.4