There is not much else to say. surfaces created with weston_surface_create
have
a NULL resource, and if that gets picked by default_grab_focus (in input.c)
the next
seat_get_pointer will break.

I guess another solution could be to make weston_compositor_pick_surface not
pick surfaces without a valid resource, but i'm not sure that wouldn't
break something
else.


2013/7/8 Rob Bradford <[email protected]>

> Can you provide some more explanation in your commit message about why
> the pointer might have a surface focussed but that surface does not
> have a valid resource. (I'm wondering if this is fixing the symptom of
> a problem elsewhere.)
>
> Rob
>
> On 7 July 2013 16:38, Giulio Camuffo <[email protected]> wrote:
> > seat->pointer->focus->resource can be NULL, if the surface was
> > created with weston_surface_create.
> > ---
> >  src/input.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/src/input.c b/src/input.c
> > index 644487a..a7a37e5 100644
> > --- a/src/input.c
> > +++ b/src/input.c
> > @@ -1181,7 +1181,7 @@ seat_get_pointer(struct wl_client *client, struct
> wl_resource *resource,
> >         wl_resource_set_implementation(cr, &pointer_interface,
> seat->pointer,
> >                                        unbind_resource);
> >
> > -       if (seat->pointer->focus &&
> > +       if (seat->pointer->focus && seat->pointer->focus->resource &&
> >             wl_resource_get_client(seat->pointer->focus->resource) ==
> client) {
> >                 struct weston_surface *surface;
> >                 wl_fixed_t sx, sy;
> > --
> > 1.8.3.2
> >
> > _______________________________________________
> > wayland-devel mailing list
> > [email protected]
> > http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to