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) <noreply@anthropic.com>
This commit is contained in:
parent
be1fab51ea
commit
8ac198de15
1 changed files with 3 additions and 14 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue