aboutsummaryrefslogtreecommitdiff
path: root/src/layout/workspace.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-05-01 19:00:11 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-05-01 19:00:19 +0400
commit365dbacae7ed9b6dcee2c9a9281e9a531b842007 (patch)
tree5341d8e18b63f8ce30e721ef79c3524fc34b1834 /src/layout/workspace.rs
parentaf9caa1d9b176fe3606323a8c05c0c741c1f6c0a (diff)
downloadniri-365dbacae7ed9b6dcee2c9a9281e9a531b842007.tar.gz
niri-365dbacae7ed9b6dcee2c9a9281e9a531b842007.tar.bz2
niri-365dbacae7ed9b6dcee2c9a9281e9a531b842007.zip
Move unmap snapshot from Mapped to Tile
Diffstat (limited to 'src/layout/workspace.rs')
-rw-r--r--src/layout/workspace.rs30
1 files changed, 27 insertions, 3 deletions
diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs
index fd5662b8..1aa1a02b 100644
--- a/src/layout/workspace.rs
+++ b/src/layout/workspace.rs
@@ -1176,6 +1176,32 @@ impl<W: LayoutElement> Workspace<W> {
self.activate_column(column_idx);
}
+ pub fn store_unmap_snapshot_if_empty(&mut self, renderer: &mut GlesRenderer, window: &W::Id) {
+ let (tile, _) = self
+ .tiles_in_render_order()
+ .find(|(tile, _)| tile.window().id() == window)
+ .unwrap();
+
+ // FIXME: workspaces should probably cache their last used scale so they can be correctly
+ // rendered even with no outputs connected.
+ let output_scale = self
+ .output
+ .as_ref()
+ .map(|o| Scale::from(o.current_scale().fractional_scale()))
+ .unwrap_or(Scale::from(1.));
+
+ tile.store_unmap_snapshot_if_empty(renderer, output_scale, self.view_size);
+ }
+
+ pub fn clear_unmap_snapshot(&mut self, window: &W::Id) {
+ let (tile, _) = self
+ .tiles_in_render_order()
+ .find(|(tile, _)| tile.window().id() == window)
+ .unwrap();
+
+ let _ = tile.take_unmap_snapshot();
+ }
+
pub fn start_close_animation_for_window(
&mut self,
renderer: &mut GlesRenderer,
@@ -1194,9 +1220,7 @@ impl<W: LayoutElement> Workspace<W> {
.map(|o| Scale::from(o.current_scale().fractional_scale()))
.unwrap_or(Scale::from(1.));
- let Some(snapshot) =
- tile.take_snapshot_for_close_anim(renderer, output_scale, self.view_size)
- else {
+ let Some(snapshot) = tile.take_unmap_snapshot() else {
return;
};