summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alacritty/src/display/window.rs16
-rw-r--r--alacritty_terminal/src/ansi.rs3
-rw-r--r--alacritty_terminal/src/grid/storage.rs2
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;