wayland: Don't overwrite surface offsets
The intention when the offset request was added to protocol was that the attach request in a new enough protocol version should require dx/dy to be zero, but ignore them otherwise. The current code checks for 0, but then overwrites the existing dx/dy with it, which renders an earlier wl_surface_offset() call ineffective. Fixes: #2622 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2843>
This commit is contained in:
parent
df653b95ad
commit
ea373cb059
@ -1044,19 +1044,24 @@ wl_surface_attach (struct wl_client *client,
|
||||
}
|
||||
|
||||
if (wl_resource_get_version (surface_resource) >=
|
||||
WL_SURFACE_OFFSET_SINCE_VERSION &&
|
||||
(dx != 0 || dy != 0))
|
||||
WL_SURFACE_OFFSET_SINCE_VERSION)
|
||||
{
|
||||
wl_resource_post_error (surface_resource,
|
||||
WL_SURFACE_ERROR_INVALID_OFFSET,
|
||||
"Attaching with an offset is no longer allowed");
|
||||
return;
|
||||
if (dx != 0 || dy != 0)
|
||||
{
|
||||
wl_resource_post_error (surface_resource,
|
||||
WL_SURFACE_ERROR_INVALID_OFFSET,
|
||||
"Attaching with an offset is no longer allowed");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pending->dx = dx;
|
||||
pending->dy = dy;
|
||||
}
|
||||
|
||||
pending->newly_attached = TRUE;
|
||||
pending->buffer = buffer;
|
||||
pending->dx = dx;
|
||||
pending->dy = dy;
|
||||
|
||||
if (buffer)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user