Reimplement window closing anim in an efficient way

- Keep a root surface cache to be accessible in surface destroyed()
- Only snapshot during / right before closing, rather than every frame
- Store textures rather than elements to handle scale and alpha properly
This commit is contained in:
Ivan Molodetskikh
2024-04-10 08:53:35 +04:00
parent b9e789619f
commit 1888696567
10 changed files with 286 additions and 209 deletions
+2 -4
View File
@@ -2,9 +2,7 @@ use std::cell::RefCell;
use std::cmp::{max, min};
use std::rc::Rc;
use niri::layout::{
LayoutElement, LayoutElementRenderElement, LayoutElementSnapshotRenderElements,
};
use niri::layout::{LayoutElement, LayoutElementRenderElement, LayoutElementRenderSnapshot};
use niri::render_helpers::renderer::NiriRenderer;
use niri::render_helpers::{RenderSnapshot, RenderTarget};
use niri::window::ResolvedWindowRules;
@@ -175,7 +173,7 @@ impl LayoutElement for TestWindow {
]
}
fn take_last_render(&self) -> RenderSnapshot<LayoutElementSnapshotRenderElements> {
fn take_last_render(&self) -> LayoutElementRenderSnapshot {
RenderSnapshot::default()
}