diff options
Diffstat (limited to 'alacritty/src/display/mod.rs')
-rw-r--r-- | alacritty/src/display/mod.rs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/alacritty/src/display/mod.rs b/alacritty/src/display/mod.rs index 2a55402e..9c37bd0e 100644 --- a/alacritty/src/display/mod.rs +++ b/alacritty/src/display/mod.rs @@ -188,9 +188,18 @@ pub struct Display { impl Display { pub fn new<E>(config: &Config, event_loop: &EventLoop<E>) -> Result<Display, Error> { - // Guess DPR based on first monitor. - let estimated_dpr = - event_loop.available_monitors().next().map(|m| m.scale_factor()).unwrap_or(1.); + #[cfg(any(not(feature = "x11"), target_os = "macos", windows))] + let is_x11 = false; + #[cfg(all(feature = "x11", not(any(target_os = "macos", windows))))] + let is_x11 = event_loop.is_x11(); + + // Guess DPR based on first monitor. On Wayland the initial frame always renders at a DPR + // of 1. + let estimated_dpr = if cfg!(any(target_os = "macos", windows)) || is_x11 { + event_loop.available_monitors().next().map(|m| m.scale_factor()).unwrap_or(1.) + } else { + 1. + }; // Guess the target window dimensions. let metrics = GlyphCache::static_metrics(config.ui_config.font.clone(), estimated_dpr)?; @@ -278,11 +287,6 @@ impl Display { #[cfg(target_os = "macos")] window.set_has_shadow(config.ui_config.background_opacity() >= 1.0); - #[cfg(all(feature = "x11", not(any(target_os = "macos", windows))))] - let is_x11 = event_loop.is_x11(); - #[cfg(not(any(feature = "x11", target_os = "macos", windows)))] - let is_x11 = false; - // On Wayland we can safely ignore this call, since the window isn't visible until you // actually draw something into it and commit those changes. #[cfg(not(any(target_os = "macos", windows)))] |