summaryrefslogtreecommitdiff
path: root/src/server/headless.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-08-14 05:18:30 +0300
committerGitHub <noreply@github.com>2026-08-14 05:18:30 +0300
commitd76657f2c7fc18dcce3b9af43842c8afaba1646b (patch)
treed8643d39aaa1aff3193e178760f21d52150c6f7c /src/server/headless.rs
parentd2c317adc4b5fd73a7054d74f92d633a31069391 (diff)
fix: speed up alternate-screen history reads (#2426)
refs #2387
Diffstat (limited to 'src/server/headless.rs')
-rw-r--r--src/server/headless.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/server/headless.rs b/src/server/headless.rs
index 7393a7c5..ac1e7db2 100644
--- a/src/server/headless.rs
+++ b/src/server/headless.rs
@@ -278,6 +278,7 @@ struct AltScreenReadSpec {
lines: usize,
unwrap: bool,
initial: crate::terminal::ScreenSnapshot,
+ content_seq: u64,
}
enum AltScreenReadConflict {
@@ -3416,7 +3417,7 @@ impl HeadlessServer {
if runtime.wheel_routing() != Some(crate::pane::WheelRouting::MouseReport) {
return None;
}
- let (screen, initial) = runtime.screen_text_snapshot()?;
+ let (screen, initial, content_seq) = runtime.screen_text_snapshot_with_seq()?;
if screen != crate::ghostty::ActiveScreen::Alternate || initial.rows.len() >= lines {
return None;
}
@@ -3425,6 +3426,7 @@ impl HeadlessServer {
lines,
unwrap: source == ReadSource::RecentUnwrapped,
initial,
+ content_seq,
})
}
@@ -3776,6 +3778,7 @@ impl HeadlessServer {
spec.lines,
spec.unwrap,
spec.initial,
+ spec.content_seq,
Instant::now(),
);
self.pending_alt_screen_reads.push(pending);
@@ -6636,6 +6639,7 @@ next_tab = ""
cols: 80,
rows: Vec::new(),
},
+ 0,
Instant::now(),
),
);