diff options
author | Kirill Chibisov <contact@kchibisov.com> | 2019-12-31 19:53:27 +0300 |
---|---|---|
committer | Christian Duerr <contact@christianduerr.com> | 2019-12-31 16:53:27 +0000 |
commit | 6478ccaaa333d4493fcd813f654ca041ca20e586 (patch) | |
tree | f03d91a48584633df98cf6b82cc372163c92d690 | |
parent | 3e6e8a03eeea780e28b6fc217ee495dee3342c48 (diff) | |
download | alacritty-6478ccaaa333d4493fcd813f654ca041ca20e586.tar.gz alacritty-6478ccaaa333d4493fcd813f654ca041ca20e586.zip |
Fix high startup time on wlroots compositors
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | alacritty/src/display.rs | 11 |
2 files changed, 11 insertions, 1 deletions
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); |