xwayland: Make resizing work again

9c376b54ea fixed the crash when a client goes
away during a resize grab.  The shsurf->resource is set to NULL in that
case and we were trying to send out events to a NULL resource.  However,
xwayland shell surfaces are created by the xwayland module and don't have a
resource.  We use a different function pointer for sending the configure
events that handle the events inside xwayland instead of sending protocol
events.

To fix all this, we just move the check for a NULL resource into the
functions that we use for sending configure events for wl_shell and
xdg_shell.
dev
Kristian Høgsberg 11 years ago
parent 62899f5124
commit e0b9d5be84
  1. 4
      desktop-shell/shell.c

@ -1630,7 +1630,7 @@ resize_grab_motion(struct weston_pointer_grab *grab, uint32_t time,
weston_pointer_move(pointer, x, y); weston_pointer_move(pointer, x, y);
if (!shsurf || !shsurf->resource) if (!shsurf)
return; return;
weston_view_from_global_fixed(shsurf->view, weston_view_from_global_fixed(shsurf->view,
@ -1665,6 +1665,7 @@ send_configure(struct weston_surface *surface,
assert(shsurf); assert(shsurf);
if (shsurf->resource)
wl_shell_surface_send_configure(shsurf->resource, wl_shell_surface_send_configure(shsurf->resource,
edges, width, height); edges, width, height);
} }
@ -3514,6 +3515,7 @@ xdg_send_configure(struct weston_surface *surface,
assert(shsurf); assert(shsurf);
if (shsurf->resource)
xdg_surface_send_configure(shsurf->resource, width, height); xdg_surface_send_configure(shsurf->resource, width, height);
} }

Loading…
Cancel
Save