[PATCH weston v2 02/21] input: Make pointer grab motion callbacks take an event struct
Jonas Ådahl
jadahl at gmail.com
Wed Oct 28 02:34:06 PDT 2015
On Tue, Oct 27, 2015 at 05:40:33PM +0000, Daniel Stone wrote:
> Hi Jonas,
>
> On 13 May 2015 at 11:26, Jonas Ådahl <jadahl at gmail.com> wrote:
> > @@ -3182,18 +3182,20 @@ popup_grab_focus(struct weston_pointer_grab *grab)
> >
> > static void
> > popup_grab_motion(struct weston_pointer_grab *grab, uint32_t time,
> > - wl_fixed_t x, wl_fixed_t y)
> > + struct weston_pointer_motion_event *event)
> > {
> > struct weston_pointer *pointer = grab->pointer;
> > struct wl_resource *resource;
> > + wl_fixed_t x, y;
> > wl_fixed_t sx, sy;
> >
> > if (pointer->focus) {
> > + weston_pointer_motion_to_abs(pointer, event, &x, &y);
> > weston_view_from_global_fixed(pointer->focus, x, y,
> > &pointer->sx, &pointer->sy);
> > }
> >
> > - weston_pointer_move(pointer, x, y);
> > + weston_pointer_move(pointer, event);
> >
> > wl_resource_for_each(resource, &pointer->focus_resource_list) {
> > weston_view_from_global_fixed(pointer->focus,
> > diff --git a/ivi-shell/hmi-controller.c b/ivi-shell/hmi-controller.c
> > index bad2418..5cd5ac9 100644
> > --- a/ivi-shell/hmi-controller.c
> > +++ b/ivi-shell/hmi-controller.c
> > @@ -1360,16 +1360,19 @@ layer_set_pos(struct ivi_layout_layer *layer, wl_fixed_t pos_x,
> >
> > static void
> > pointer_move_grab_motion(struct weston_pointer_grab *grab, uint32_t time,
> > - wl_fixed_t x, wl_fixed_t y)
> > + struct weston_pointer_motion_event *event)
> > {
> > struct pointer_move_grab *pnt_move_grab =
> > (struct pointer_move_grab *)grab;
> > - wl_fixed_t pointer_pos[2] = {x, y};
> > + wl_fixed_t pointer_pos[2] = {
> > + wl_fixed_from_double(event->x),
> > + wl_fixed_from_double(event->y),
> > + };
>
> Should this also be weston_pointer_motion_to_abs()?
Yes, it probably should.
>
> > diff --git a/src/compositor-x11.c b/src/compositor-x11.c
> > index 5129e85..57a7d11 100644
> > --- a/src/compositor-x11.c
> > +++ b/src/compositor-x11.c
> > @@ -1105,8 +1106,14 @@ x11_compositor_deliver_motion_event(struct x11_compositor *c,
> > wl_fixed_from_int(motion_notify->event_y),
> > &x, &y);
> >
> > + event = (struct weston_pointer_motion_event) {
> > + .mask = WESTON_POINTER_MOTION_REL,
> > + .dx = wl_fixed_to_double(x - c->prev_x),
> > + .dy = wl_fixed_to_double(y - c->prev_y)
> > + };
> > +
>
> To be honest, I'm somewhat skeptical of faking relative motion from
> abs in general.
Sure. Though, this is nothing new with this patch. We've sent X11
pointer movements like this since as far as I can remember.
Jonas
>
> Cheers,
> Daniel
More information about the wayland-devel
mailing list