On Sun, Oct 07, 2012 at 08:56:29AM -0600, Scott Moreau wrote:
> The surface_list can only be used when called in a path originating from
> weston_output_repaint(). Additionally, the calls omitted by this patch were
> redundant since they were called in paths ultimately leading to a repaint
> call,
> which calls weston_compositor_repick(), which in turn calls
> weston_device_repick(),
> which ultimately accesses the surface_list. This fixes a crash when having
> multiple
> surfaces opened and hovering over the launcher tooltips.
> ---
> src/compositor.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/src/compositor.c b/src/compositor.c
> index e1517bb..c42c8c6 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -1476,7 +1476,6 @@ notify_motion(struct weston_seat *seat, uint32_t time,
> wl_fixed_t x, wl_fixed_t
> ix, iy, NULL))
> weston_output_update_zoom(output, ZOOM_FOCUS_POINTER);
>
> - weston_device_repick(seat);
We do need to repick here, we need to which surface the pointer is in
for each motion of the pointer and send enter/leave events
accordingly. We need to make weston_device_repick use the layer list
instead.
Kristian
> interface = pointer->grab->interface;
> interface->motion(pointer->grab, time,
> pointer->grab->x, pointer->grab->y);
> @@ -1721,7 +1720,6 @@ notify_pointer_focus(struct weston_seat *seat, struct
> weston_output *output,
> pointer->x = x;
> pointer->y = y;
> compositor->focus = 1;
> - weston_compositor_repick(compositor);
> } else {
> compositor->focus = 0;
> /* FIXME: We should call wl_pointer_set_focus(seat,
> --
> 1.7.11.4
>
> _______________________________________________
> 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