aboutsummaryrefslogtreecommitdiff
path: root/src/app/runtime.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-08-09 02:04:39 +0300
committerGitHub <noreply@github.com>2026-08-09 02:04:39 +0300
commit1777e9bba32b953ed1ad203b4a16d01105539000 (patch)
tree22096973812c9baba822453d8470bdcfe64fc2a6 /src/app/runtime.rs
parent36a8d36a7258e08b40c01bf521b1f4006525f143 (diff)
feat(graphics): add direct pane frame streaming (#2523)
* feat(graphics): add direct pane frame streaming * feat(graphics): expose pane visibility * test(graphics): preserve legacy terminal image output * fix(graphics): harden streaming lifecycle * fix(input): preserve mouse releases outside panes
Diffstat (limited to 'src/app/runtime.rs')
-rw-r--r--src/app/runtime.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/app/runtime.rs b/src/app/runtime.rs
index 49420381..31426f87 100644
--- a/src/app/runtime.rs
+++ b/src/app/runtime.rs
@@ -61,6 +61,11 @@ impl App {
msg: crate::api::ApiRequestMessage,
) -> bool {
let previous_mode = self.state.mode;
+ let stream_open = match &msg.request.method {
+ crate::api::schema::Method::PaneGraphicsStreamOpen(params) => Some(params.clone()),
+ _ => None,
+ };
+ let stream_active = msg.stream_active.clone();
let mut changed = self.expire_due_metadata(Instant::now());
changed |= crate::api::request_changes_ui(&msg.request);
let skip_default_workspace = matches!(
@@ -83,6 +88,9 @@ impl App {
return changed | deferred_changed;
}
let response = self.handle_api_request(msg.request);
+ if let (Some(params), Some(active)) = (stream_open.as_ref(), stream_active) {
+ self.attach_pane_graphics_stream_active(params, active, &response);
+ }
if !skip_default_workspace {
changed |= self.ensure_default_workspace();
}