aboutsummaryrefslogtreecommitdiff
path: root/src/terminal
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-28 23:29:11 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-28 23:29:11 +0300
commite27a4ea427c9ed6248c0ee80570e94ed7b1928bd (patch)
tree0cae21a2b3939293be129aaaecb23641f68bab54 /src/terminal
parente16d7d8c07a20f5ee0b4111808680bbcfd7df9ac (diff)
perf: skip rendering hidden pty updates
Diffstat (limited to 'src/terminal')
-rw-r--r--src/terminal/id.rs4
-rw-r--r--src/terminal/runtime.rs14
2 files changed, 12 insertions, 6 deletions
diff --git a/src/terminal/id.rs b/src/terminal/id.rs
index 53ef6786..c7310753 100644
--- a/src/terminal/id.rs
+++ b/src/terminal/id.rs
@@ -20,6 +20,10 @@ impl TerminalId {
let counter = NEXT_TERMINAL_ID.fetch_add(1, Ordering::Relaxed);
Self(format!("term_{micros:x}{counter:x}"))
}
+
+ pub(crate) fn as_str(&self) -> &str {
+ &self.0
+ }
}
impl fmt::Display for TerminalId {
diff --git a/src/terminal/runtime.rs b/src/terminal/runtime.rs
index f9858ce0..d4b66f06 100644
--- a/src/terminal/runtime.rs
+++ b/src/terminal/runtime.rs
@@ -1,4 +1,6 @@
-use std::sync::{atomic::AtomicBool, Arc};
+use std::sync::Arc;
+
+use crate::render_signal::RenderSignal;
use bytes::Bytes;
use ratatui::{layout::Rect, Frame};
@@ -64,7 +66,7 @@ impl TerminalRuntime {
host_terminal_theme: crate::terminal_theme::TerminalTheme,
events: mpsc::Sender<AppEvent>,
render_notify: Arc<Notify>,
- render_dirty: Arc<AtomicBool>,
+ render_dirty: Arc<RenderSignal>,
) -> std::io::Result<Self> {
crate::pane::PaneRuntime::from_handoff_fd(
import,
@@ -88,7 +90,7 @@ impl TerminalRuntime {
launch_env: &crate::pane::PaneLaunchEnv,
events: mpsc::Sender<AppEvent>,
render_notify: Arc<Notify>,
- render_dirty: Arc<AtomicBool>,
+ render_dirty: Arc<RenderSignal>,
) -> std::io::Result<Self> {
crate::pane::PaneRuntime::spawn(
pane_id,
@@ -120,7 +122,7 @@ impl TerminalRuntime {
initial_history_ansi: Option<&str>,
events: mpsc::Sender<AppEvent>,
render_notify: Arc<Notify>,
- render_dirty: Arc<AtomicBool>,
+ render_dirty: Arc<RenderSignal>,
) -> std::io::Result<Self> {
crate::pane::PaneRuntime::spawn_with_initial_history(
pane_id,
@@ -153,7 +155,7 @@ impl TerminalRuntime {
host_terminal_theme: crate::terminal_theme::TerminalTheme,
events: mpsc::Sender<AppEvent>,
render_notify: Arc<Notify>,
- render_dirty: Arc<AtomicBool>,
+ render_dirty: Arc<RenderSignal>,
) -> std::io::Result<Self> {
crate::pane::PaneRuntime::spawn_shell_command(
pane_id,
@@ -186,7 +188,7 @@ impl TerminalRuntime {
host_terminal_theme: crate::terminal_theme::TerminalTheme,
events: mpsc::Sender<AppEvent>,
render_notify: Arc<Notify>,
- render_dirty: Arc<AtomicBool>,
+ render_dirty: Arc<RenderSignal>,
) -> std::io::Result<Self> {
crate::pane::PaneRuntime::spawn_argv_command(
pane_id,