From 8ac198de1559c4a396dbc00336637bc6af138243 Mon Sep 17 00:00:00 2001 From: Lionel DARNIS Date: Fri, 21 Aug 2026 09:54:25 +0200 Subject: [PATCH] kms: revient au mode prefere pour le choix initial de sortie Revient sur 7187efd5, qui elisait le rafraichissement le plus eleve a la resolution native au lieu du mode marque PREFERRED. Sans effet au quotidien : ~/.local/state/cosmic-comp/outputs.ron memorise le mode choisi par sortie et pin deja DP-1 en 3840x2160 a 119,88 Hz. populate_modes ne decide qu'en l'absence d'etat memorise, c'est-a-dire sur un profil neuf ou un ecran jamais vu. Co-Authored-By: Claude Opus 5 (1M context) --- src/backend/kms/device.rs | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/backend/kms/device.rs b/src/backend/kms/device.rs index 7df3c8f9..418a16f3 100644 --- a/src/backend/kms/device.rs +++ b/src/backend/kms/device.rs @@ -1241,26 +1241,15 @@ fn populate_modes( ) -> Result<()> { let conn_info = drm.get_connector(conn, false)?; let max_bpc = drm_helpers::get_max_bpc(drm, conn)?.map(|(_val, range)| range.end.min(16)); - let preferred = conn_info + let Some(mode) = conn_info .modes() .iter() .find(|mode| mode.mode_type().contains(ModeTypeFlags::PREFERRED)) .copied() - .or(conn_info.modes().first().copied()); - let Some(preferred) = preferred else { + .or(conn_info.modes().first().copied()) + else { anyhow::bail!("No mode found"); }; - // Prefer the highest refresh rate at the native resolution so that - // high-refresh panels (120 Hz, 144 Hz, …) are used out-of-the-box - // without a pre-existing outputs.ron config. - let preferred_size = preferred.size(); - let mode = conn_info - .modes() - .iter() - .filter(|m| m.size() == preferred_size) - .max_by_key(|m| drm_helpers::calculate_refresh_rate(**m)) - .copied() - .unwrap_or(preferred); let refresh_rate = drm_helpers::calculate_refresh_rate(mode); let output_mode = OutputMode {