[PATCH weston v3] input: use doubles in the interfaces to notify of input events
Daniel Stone
daniel at fooishbar.org
Tue Mar 22 09:47:17 UTC 2016
Hey Giulio,
On 21 March 2016 at 11:29, Giulio Camuffo <giuliocamuffo at gmail.com> wrote:
> @@ -1275,11 +1275,15 @@ input_set_cursor(struct wayland_input *input)
> static void
> input_handle_pointer_enter(void *data, struct wl_pointer *pointer,
> uint32_t serial, struct wl_surface *surface,
> - wl_fixed_t x, wl_fixed_t y)
> + wl_fixed_t fixed_x, wl_fixed_t fixed_y)
> {
> struct wayland_input *input = data;
> int32_t fx, fy;
> enum theme_location location;
> + double x, y;
> +
> + x = wl_fixed_to_double(fixed_x);
> + y = wl_fixed_to_double(fixed_y);
>
> /* XXX: If we get a modifier event immediately before the focus,
> * we should try to keep the same serial. */
> @@ -1288,11 +1292,10 @@ input_handle_pointer_enter(void *data, struct wl_pointer *pointer,
>
> if (input->output->frame) {
> location = frame_pointer_enter(input->output->frame, input,
> - wl_fixed_to_int(x),
> - wl_fixed_to_int(y));
> + x, y);
> frame_interior(input->output->frame, &fx, &fy, NULL, NULL);
> - x -= wl_fixed_from_int(fx);
> - y -= wl_fixed_from_int(fy);
> + x -= fx;
> + y -= fy;
>
> if (frame_status(input->output->frame) & FRAME_STATUS_REPAINT)
> weston_output_schedule_repaint(&input->output->base);
> @@ -1300,6 +1303,8 @@ input_handle_pointer_enter(void *data, struct wl_pointer *pointer,
> location = THEME_LOCATION_CLIENT_AREA;
> }
>
> + x = wl_fixed_to_double(fixed_x);
> + y = wl_fixed_to_double(fixed_y);
> weston_output_transform_coordinate(&input->output->base, x, y, &x, &y);
I think the second pair of wl_fixed_to_double calls here is broken; at
the very least, it's a change in behaviour from previously.
The rest, as far as I can tell (had to dig a little bit to convince
myself that the grab interface didn't require any changes), looks
good:
Reviewed-by: Daniel Stone <daniels at collabora.com>
Thanks for taking this on!
Cheers,
Daniel
More information about the wayland-devel
mailing list