From 18886965673e3f9d5faec0bafd09f68be2d9db45 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Wed, 10 Apr 2024 08:53:35 +0400 Subject: 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 --- src/niri.rs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/niri.rs') diff --git a/src/niri.rs b/src/niri.rs index 1eedcffa..f14f7dcd 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -151,6 +151,10 @@ pub struct Niri { // Windows which don't have a buffer attached yet. pub unmapped_windows: HashMap, + // Cached root surface for every surface, so that we can access it in destroyed() where the + // normal get_parent() is cleared out. + pub root_surface: HashMap, + pub output_state: HashMap, pub output_by_name: HashMap, @@ -1318,6 +1322,7 @@ impl Niri { output_state: HashMap::new(), output_by_name: HashMap::new(), unmapped_windows: HashMap::new(), + root_surface: HashMap::new(), monitors_active: true, devices: HashSet::new(), -- cgit