wayland: don't send set_buffer_scale on wl_surface below version 3

wl_surface::set_buffer_scale is available since version 3. Sending it
on an older surface is a protocol error that terminates the connection.
This could happen when setting a custom cursor on a compositor without
wp_viewporter. The neighboring damage call already checks the version.
This commit is contained in:
Olivier Goffart
2026-07-09 09:52:39 +00:00
parent 11dd459136
commit ca573df559
2 changed files with 4 additions and 1 deletions

View File

@@ -814,10 +814,12 @@ impl WindowState {
let size = PhysicalSize::new(cursor.w, cursor.h).to_logical(scale);
viewport.set_destination(size.width, size.height);
scale
} else {
} else if surface.version() >= 3 {
let scale = surface.data::<SurfaceData>().unwrap().surface_data().scale_factor();
surface.set_buffer_scale(scale);
scale as f64
} else {
1.
};
surface.attach(Some(cursor.buffer.wl_buffer()), 0, 0);