summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirill Chibisov <contact@kchibisov.com>2019-12-31 19:53:27 +0300
committerChristian Duerr <contact@christianduerr.com>2019-12-31 16:53:27 +0000
commit6478ccaaa333d4493fcd813f654ca041ca20e586 (patch)
treef03d91a48584633df98cf6b82cc372163c92d690
parent3e6e8a03eeea780e28b6fc217ee495dee3342c48 (diff)
downloadalacritty-6478ccaaa333d4493fcd813f654ca041ca20e586.tar.gz
alacritty-6478ccaaa333d4493fcd813f654ca041ca20e586.zip
Fix high startup time on wlroots compositors
-rw-r--r--CHANGELOG.md1
-rw-r--r--alacritty/src/display.rs11
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);