Move unmap snapshot from Mapped to Tile

This commit is contained in:
Ivan Molodetskikh
2024-05-01 19:00:11 +04:00
parent af9caa1d9b
commit 365dbacae7
7 changed files with 128 additions and 113 deletions
+48 -6
View File
@@ -140,8 +140,6 @@ pub trait LayoutElement {
/// Runs periodic clean-up tasks.
fn refresh(&self);
fn take_unmap_snapshot(&self) -> Option<LayoutElementRenderSnapshot>;
fn animation_snapshot(&self) -> Option<&LayoutElementRenderSnapshot>;
fn take_animation_snapshot(&mut self) -> Option<LayoutElementRenderSnapshot>;
}
@@ -1749,6 +1747,54 @@ impl<W: LayoutElement> Layout<W> {
}
}
pub fn store_unmap_snapshot(&mut self, renderer: &mut GlesRenderer, window: &W::Id) {
let _span = tracy_client::span!("Layout::store_unmap_snapshot");
match &mut self.monitor_set {
MonitorSet::Normal { monitors, .. } => {
for mon in monitors {
for ws in &mut mon.workspaces {
if ws.has_window(window) {
ws.store_unmap_snapshot_if_empty(renderer, window);
return;
}
}
}
}
MonitorSet::NoOutputs { workspaces, .. } => {
for ws in workspaces {
if ws.has_window(window) {
ws.store_unmap_snapshot_if_empty(renderer, window);
return;
}
}
}
}
}
pub fn clear_unmap_snapshot(&mut self, window: &W::Id) {
match &mut self.monitor_set {
MonitorSet::Normal { monitors, .. } => {
for mon in monitors {
for ws in &mut mon.workspaces {
if ws.has_window(window) {
ws.clear_unmap_snapshot(window);
return;
}
}
}
}
MonitorSet::NoOutputs { workspaces, .. } => {
for ws in workspaces {
if ws.has_window(window) {
ws.clear_unmap_snapshot(window);
return;
}
}
}
}
}
pub fn start_close_animation_for_window(
&mut self,
renderer: &mut GlesRenderer,
@@ -1996,10 +2042,6 @@ mod tests {
&EMPTY
}
fn take_unmap_snapshot(&self) -> Option<LayoutElementRenderSnapshot> {
None
}
fn animation_snapshot(&self) -> Option<&LayoutElementRenderSnapshot> {
None
}