diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-08-14 05:18:30 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-14 05:18:30 +0300 |
| commit | d76657f2c7fc18dcce3b9af43842c8afaba1646b (patch) | |
| tree | d8643d39aaa1aff3193e178760f21d52150c6f7c /src/server/headless.rs | |
| parent | d2c317adc4b5fd73a7054d74f92d633a31069391 (diff) | |
fix: speed up alternate-screen history reads (#2426)
refs #2387
Diffstat (limited to 'src/server/headless.rs')
| -rw-r--r-- | src/server/headless.rs | 6 |
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(), ), ); |
