9c376b54ea6f60ae10d93653132e22ef66a536d7 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.
weston_pointer_move(pointer, x, y);
- if (!shsurf || !shsurf->resource)
+ if (!shsurf)
return;
weston_view_from_global_fixed(shsurf->view,
assert(shsurf);
- wl_shell_surface_send_configure(shsurf->resource,
- edges, width, height);
+ if (shsurf->resource)
+ wl_shell_surface_send_configure(shsurf->resource,
+ edges, width, height);
}
static const struct weston_shell_client shell_client = {
assert(shsurf);
- xdg_surface_send_configure(shsurf->resource, width, height);
+ if (shsurf->resource)
+ xdg_surface_send_configure(shsurf->resource, width, height);
}
static const struct weston_shell_client xdg_client = {