diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-01 19:00:11 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-01 19:00:19 +0400 |
| commit | 365dbacae7ed9b6dcee2c9a9281e9a531b842007 (patch) | |
| tree | 5341d8e18b63f8ce30e721ef79c3524fc34b1834 /src/layout/workspace.rs | |
| parent | af9caa1d9b176fe3606323a8c05c0c741c1f6c0a (diff) | |
| download | niri-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.rs | 30 |
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; }; |
