fix scaling (at least for integer scaling, fractional is still broken)

This commit is contained in:
Rasmus Moorats 2025-05-21 12:38:27 +03:00
parent a61845bb09
commit 1b0c426c17
Signed by: xx
GPG key ID: FE14255A6AE7241C

View file

@ -387,11 +387,16 @@ impl Dispatch<ZwlrScreencopyFrameV1, ()> for AppState {
if let (Some(surface_data), Some(_)) = (state.surfaces.get_mut(&data.output), &state.shm) {
if let Some(buffer) = &data.buffer {
let transform = state.output_info
.get(&data.output)
let output_info = state.output_info
.get(&data.output);
let transform = output_info
.map_or(Transform::Normal, |info| info.transform);
let scale = output_info
.map_or(1, |info| info.scale);
surface_data.surface.set_buffer_transform(transform);
surface_data.surface.set_buffer_scale(scale);
if data.y_inverted {
surface_data.surface.set_buffer_transform(Transform::Flipped180);
@ -522,12 +527,15 @@ fn main() {
let compositor = app_state.compositor.as_ref().unwrap();
let layer_shell = app_state.layer_shell.as_ref().unwrap();
let transform = app_state.output_info
.get(output)
let output_info = app_state.output_info.get(output);
let transform = output_info
.map_or(Transform::Normal, |info| info.transform);
let scale = output_info
.map_or(1, |info| info.scale);
let surface = compositor.create_surface(&qh, ());
surface.set_buffer_transform(transform);
surface.set_buffer_scale(scale);
let layer_surface = layer_shell.get_layer_surface(
&surface,