Fix compositor crashes when the clients die before the grab ends.
---
 src/shell.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/shell.c b/src/shell.c
index 5abfdb5..8a82ad1 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -224,7 +224,8 @@ weston_surface_move(struct weston_surface *es,
        move->dy = es->geometry.y - wd->input_device.grab_y;
        move->surface = es;
 
-       wl_input_device_start_pointer_grab(&wd->input_device, &move->grab, 
time);
+       wl_input_device_start_pointer_grab(&wd->input_device, &move->grab,
+                                          time, es->surface.resource.client);
 
        wl_input_device_set_pointer_focus(&wd->input_device, NULL, time, 0, 0);
 
@@ -333,7 +334,8 @@ weston_surface_resize(struct shell_surface *shsurf,
        resize->height = shsurf->surface->geometry.height;
        resize->shsurf = shsurf;
 
-       wl_input_device_start_pointer_grab(&wd->input_device, &resize->grab, 
time);
+       wl_input_device_start_pointer_grab(&wd->input_device, &resize->grab,
+                                          time, shsurf->resource.client);
 
        wl_input_device_set_pointer_focus(&wd->input_device, NULL, time, 0, 0);
 
@@ -738,7 +740,9 @@ shell_map_popup(struct shell_surface *shsurf, uint32_t time)
        shsurf->popup.initial_up = 0;
 
        wl_input_device_start_pointer_grab(shsurf->popup.grab.input_device,
-                                  &shsurf->popup.grab, shsurf->popup.time);
+                                          &shsurf->popup.grab,
+                                          shsurf->popup.time,
+                                          shsurf->resource.client);
 }
 
 static void
@@ -1355,7 +1359,8 @@ rotate_binding(struct wl_input_device *device, uint32_t 
time,
                                 surface->surface->geometry.height / 2,
                                 &rotate->center.x, &rotate->center.y);
 
-       wl_input_device_start_pointer_grab(device, &rotate->grab, time);
+       wl_input_device_start_pointer_grab(device, &rotate->grab, time,
+                                          surface->surface.resource.client);
 
        dx = device->x - rotate->center.x;
        dy = device->y - rotate->center.y;
-- 
1.7.5.4

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to