From 6478ccaaa333d4493fcd813f654ca041ca20e586 Mon Sep 17 00:00:00 2001 From: Kirill Chibisov Date: Tue, 31 Dec 2019 19:53:27 +0300 Subject: [PATCH] Fix high startup time on wlroots compositors --- CHANGELOG.md | 1 + alacritty/src/display.rs | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c3c4114..2c6a1e9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Deadlock on Windows when closing Alacritty using the title bar "X" button (ConPTY backend) - Crash on `clear` when scrolled up in history - Entire screen getting underlined/stroke out when running `clear` +- Slow startup on some Wayland compositors ## 0.4.0 diff --git a/alacritty/src/display.rs b/alacritty/src/display.rs index f64deaed..5e800ed5 100644 --- a/alacritty/src/display.rs +++ b/alacritty/src/display.rs @@ -21,6 +21,8 @@ use std::time::Instant; use glutin::dpi::{PhysicalPosition, PhysicalSize}; use glutin::event::ModifiersState; use glutin::event_loop::EventLoop; +#[cfg(not(any(target_os = "macos", windows)))] +use glutin::platform::unix::EventLoopWindowTargetExtUnix; use glutin::window::CursorIcon; use log::{debug, info}; use parking_lot::MutexGuard; @@ -208,7 +210,14 @@ impl Display { // We should call `clear` when window is offscreen, so when `window.show()` happens it // would be with background color instead of uninitialized surface. - window.swap_buffers(); + #[cfg(not(any(target_os = "macos", windows)))] + { + // On Wayland we can safely ignore this call, since the window isn't visible until you + // actually draw something into it. + if event_loop.is_x11() { + window.swap_buffers() + } + } window.set_visible(true);