surface: don't send protocol error on invalid buffer size

A libwayland-cursor bug [1] makes many clients crash.

[1]: https://gitlab.freedesktop.org/wayland/wayland/-/issues/194

Fixes: 91fa2ff395 ("surface: check buffer size is compatible with scale")
Closes: https://github.com/swaywm/sway/issues/6014
This commit is contained in:
Simon Ser 2021-02-15 15:32:11 +01:00
parent 2530235139
commit 641c223d3c
1 changed files with 6 additions and 3 deletions

View File

@ -182,9 +182,12 @@ static bool surface_state_finalize(struct wlr_surface *surface,
if (!state->viewport.has_src &&
(state->buffer_width % state->scale != 0 ||
state->buffer_height % state->scale != 0)) {
wl_resource_post_error(surface->resource,
WL_SURFACE_ERROR_INVALID_SIZE,
"Buffer size not divisible by scale");
// TODO: send WL_SURFACE_ERROR_INVALID_SIZE error once this issue is
// resolved:
// https://gitlab.freedesktop.org/wayland/wayland/-/issues/194
wlr_log(WLR_DEBUG, "Client bug: submitted a buffer whose size (%dx%d) "
"is not divisible by scale (%d)", state->buffer_width,
state->buffer_height, state->scale);
return false;
}