[PATCH weston] compositor: Don't use surface_list when out of scope.

Scott Moreau oreaus at gmail.com
Sun Oct 7 07:56:29 PDT 2012

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);
 	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,

More information about the wayland-devel mailing list