diff options
author | Kirill Chibisov <contact@kchibisov.com> | 2022-05-20 22:23:55 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-20 22:23:55 +0300 |
commit | 9f8c5c4f5659308ee1bb3a22e7d0ca2d04db8874 (patch) | |
tree | 3190d3fe789698f7f6b1f96a87e3ac077b50edf9 | |
parent | e319ca93a6574fbdeee3f764c4390917f558e3a7 (diff) | |
download | alacritty-9f8c5c4f5659308ee1bb3a22e7d0ca2d04db8874.tar.gz alacritty-9f8c5c4f5659308ee1bb3a22e7d0ca2d04db8874.zip |
Enable damage tracking only on Wayland
Other platforms don't have such concepts in general or have them
via different interfaces not related to EGL.
This commit also resolves some minor clippy issues.
Fixes #6051.
Co-authored-by: Christian Duerr <contact@christianduerr.com>
-rw-r--r-- | alacritty/src/display/window.rs | 16 | ||||
-rw-r--r-- | alacritty_terminal/src/ansi.rs | 3 | ||||
-rw-r--r-- | alacritty_terminal/src/grid/storage.rs | 2 |
3 files changed, 19 insertions, 2 deletions
diff --git a/alacritty/src/display/window.rs b/alacritty/src/display/window.rs index f098d7f8..2e8ed085 100644 --- a/alacritty/src/display/window.rs +++ b/alacritty/src/display/window.rs @@ -471,7 +471,23 @@ impl Window { self.windowed_context.swap_buffers_with_damage(damage).expect("swap buffes with damage"); } + #[cfg(any(target_os = "macos", windows))] pub fn swap_buffers_with_damage_supported(&self) -> bool { + // Disable damage tracking on macOS/Windows since there's no observation of it working. + false + } + + #[cfg(not(any(target_os = "macos", windows)))] + pub fn swap_buffers_with_damage_supported(&self) -> bool { + // On X11 damage tracking is behaving in unexpected ways on some NVIDIA systems. Since + // there's no compositor supporting it, damage tracking is disabled on X11. + // + // For more see https://github.com/alacritty/alacritty/issues/6051. + #[cfg(all(feature = "x11", not(any(target_os = "macos", windows))))] + if self.window().xlib_window().is_some() { + return false; + } + self.windowed_context.swap_buffers_with_damage_supported() } diff --git a/alacritty_terminal/src/ansi.rs b/alacritty_terminal/src/ansi.rs index f4e8fde1..b590bd7d 100644 --- a/alacritty_terminal/src/ansi.rs +++ b/alacritty_terminal/src/ansi.rs @@ -1,6 +1,7 @@ //! ANSI Terminal Stream Parsing. use std::convert::TryFrom; +use std::fmt::Write; use std::time::{Duration, Instant}; use std::{iter, str}; @@ -950,7 +951,7 @@ where for items in params { buf.push('['); for item in *items { - buf.push_str(&format!("{:?},", *item as char)); + let _ = write!(buf, "{:?}", *item as char); } buf.push_str("],"); } diff --git a/alacritty_terminal/src/grid/storage.rs b/alacritty_terminal/src/grid/storage.rs index 0b36fef6..6fbc3bf2 100644 --- a/alacritty_terminal/src/grid/storage.rs +++ b/alacritty_terminal/src/grid/storage.rs @@ -175,7 +175,7 @@ impl<T> Storage<T> { /// Rotate the grid, moving all lines up/down in history. #[inline] pub fn rotate(&mut self, count: isize) { - debug_assert!(count.abs() as usize <= self.inner.len()); + debug_assert!(count.unsigned_abs() <= self.inner.len()); let len = self.inner.len(); self.zero = (self.zero as isize + count + len as isize) as usize % len; |