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)