diff options
Diffstat (limited to 'src/server/headless/retained_surface.rs')
| -rw-r--r-- | src/server/headless/retained_surface.rs | 13 |
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, |
