From f23e556199cc4258a00bd85c44f4245bf187d480 Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Tue, 19 Jul 2022 14:41:04 +0200 Subject: [PATCH] kms: correctly filter modes --- src/backend/kms/mod.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/backend/kms/mod.rs b/src/backend/kms/mod.rs index 12223804..822f1e28 100644 --- a/src/backend/kms/mod.rs +++ b/src/backend/kms/mod.rs @@ -40,7 +40,7 @@ use smithay::{ DisplayHandle, Resource, }, }, - utils::signaling::{Linkable, SignalToken, Signaler}, + utils::{Size, signaling::{Linkable, SignalToken, Signaler}}, wayland::{ dmabuf::DmabufGlobal, output::{Mode as OutputMode, Output, PhysicalProperties}, @@ -825,6 +825,12 @@ impl KmsState { let mode = conn_info .modes() .iter() + // match the size + .filter(|mode| { + let (x, y) = mode.size(); + Size::from((x as i32, y as i32)) == output_config.mode_size() + }) + // and then select the closest refresh rate (e.g. to match 59.98 as 60) .min_by_key(|mode| { let refresh_rate = drm_helpers::calculate_refresh_rate(**mode); (output_config.mode.1.unwrap() as i32 - refresh_rate as i32).abs()