[PATCH weston] compositor: Don't use surface_list when out of scope.
Kristian Høgsberg
hoegsberg at gmail.com
Tue Oct 9 20:16:52 PDT 2012
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
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list