From 120e21db7cde914fdc5bf46d19cb96dd74e2af56 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Mon, 30 Jan 2023 17:53:41 +0100 Subject: [PATCH] wayland/surface: Reenable WL_SURFACE_ERROR_INVALID_SIZE check This partly reverts f9857cb8 but leaves an exception for cursor surfaces in place, as some apps/toolkits will likely not get updated anytime soon to ensure cursor themes comply with the Wayland spec. Part-of: --- src/wayland/meta-wayland-surface.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c index 86104bbf0..79bd5cd44 100644 --- a/src/wayland/meta-wayland-surface.c +++ b/src/wayland/meta-wayland-surface.c @@ -772,16 +772,27 @@ meta_wayland_surface_apply_state (MetaWaylandSurface *surface, if ((get_buffer_width (surface) % surface->scale != 0) || (get_buffer_height (surface) % surface->scale != 0)) { - struct wl_resource *resource = surface->resource; - pid_t pid; + if (surface->role && !META_IS_WAYLAND_CURSOR_SURFACE (surface->role)) + { + wl_resource_post_error (surface->resource, WL_SURFACE_ERROR_INVALID_SIZE, + "Buffer size (%dx%d) must be an integer multiple " + "of the buffer_scale (%d).", + get_buffer_width (surface), + get_buffer_height (surface), surface->scale); + } + else + { + struct wl_resource *resource = surface->resource; + pid_t pid; - wl_client_get_credentials (wl_resource_get_client (resource), &pid, NULL, - NULL); + wl_client_get_credentials (wl_resource_get_client (resource), &pid, NULL, + NULL); - g_warning ("Bug in client with pid %ld: Buffer size (%dx%d) is not an" - "integer multiple of the buffer_scale (%d).", (long) pid, - get_buffer_width (surface), get_buffer_height (surface), - surface->scale); + g_warning ("Bug in client with pid %ld: Cursor buffer size (%dx%d) is " + "not an integer multiple of the buffer_scale (%d).", + (long) pid, get_buffer_width (surface), + get_buffer_height (surface), surface->scale); + } } if (state->has_new_buffer_transform)