aboutsummaryrefslogtreecommitdiff
path: root/src/server/headless/retained_surface.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/headless/retained_surface.rs')
-rw-r--r--src/server/headless/retained_surface.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/server/headless/retained_surface.rs b/src/server/headless/retained_surface.rs
index bf98bc3e..2a98536f 100644
--- a/src/server/headless/retained_surface.rs
+++ b/src/server/headless/retained_surface.rs
@@ -445,12 +445,10 @@ impl HeadlessServer {
fallback!("graphics_target");
};
let client = &self.clients[&client_id];
- let mut next_surface = surface.clone();
- crate::server::render_stream::apply_pane_surface_patch(&mut next_surface, &patch);
let Some((graphics, delivery, sources)) =
crate::server::client_shell_graphics::collect_retained(
&self.app,
- &next_surface,
+ &panes,
target,
client.cell_size,
&client.shell_graphics_delivery,
@@ -460,14 +458,19 @@ impl HeadlessServer {
fallback!("graphics_geometry");
};
graphics_changed = graphics != surface.graphics;
- next_surface.graphics = graphics;
- Some((next_surface, delivery, sources))
+ Some((graphics, delivery, sources))
} else {
None
};
if patch.rows.is_empty() && !cursor_changed && !metadata_changed && !graphics_changed {
continue;
}
+ let graphics = graphics.map(|(graphics, delivery, sources)| {
+ let mut next_surface = surface.clone();
+ crate::server::render_stream::apply_pane_surface_patch(&mut next_surface, &patch);
+ next_surface.graphics = graphics;
+ (next_surface, delivery, sources)
+ });
updates.push(RetainedRecipientUpdate {
client_id,
patch,