[gnome-shell/gnome-3-38] windowManager: Check whether metaWindow is NULL after destroy animation



commit e8ab3bf53d1b7224c749ae8187fd64c21671cc59
Author: Jonas Dreßler <verdre v0yd nl>
Date:   Sat Oct 24 22:24:35 2020 +0200

    windowManager: Check whether metaWindow is NULL after destroy animation
    
    When logging out or terminating gnome-shell, mutter will unmanage all
    open windows, triggering the window-close animation in gnome-shell and
    very quickly after that emitting "kill-window-effects". That means we'll
    call _destroyWindowDone() to cleanup our animation data, but at this
    point the MetaWindow of the window is already gone, so we get an error
    that get_meta_window() returns NULL.
    
    Fix that by checking whether get_meta_window() returned NULL and if it
    did, don't access the window.
    
    Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2018
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1483>
    
    (cherry picked from commit 96dc6d19dd30ec6dcac375de6811401012e77369)

 js/ui/windowManager.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
---
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index 91b764ea8d..176ec0d856 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -1617,7 +1617,7 @@ var WindowManager = class {
 
     _destroyWindowDone(shellwm, actor) {
         if (this._destroying.delete(actor)) {
-            let parent = actor.get_meta_window().get_transient_for();
+            const parent = actor.get_meta_window()?.get_transient_for();
             if (parent && actor._parentDestroyId) {
                 parent.disconnect(actor._parentDestroyId);
                 actor._parentDestroyId = 0;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]