Blob Blame History Raw
From 6d5e93b00b5b4ce5315276e071a98c8db5ff6463 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Wed, 13 May 2020 20:10:56 +0200
Subject: [PATCH] extensionSystem: Disable extension before unloading
 stylesheet

Removing a stylesheet from the theme will trigger a style update. There's
little point in updating the extension actors that are about to be destroyed
(hopefully), so call the extension's disable() function first.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2757
---
 js/ui/extensionSystem.js | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
index 1a34f19e9e384b1d352207ea78eba9e7e1f80ba3..5a50b473ac2bdb25ec1a7f47cbd2d00ebf889800 100644
--- a/js/ui/extensionSystem.js
+++ b/js/ui/extensionSystem.js
@@ -100,22 +100,22 @@ var ExtensionManager = class {
             } catch (e) {
                 this.logExtensionError(otherUuid, e);
             }
         }
 
+        try {
+            extension.stateObj.disable();
+        } catch (e) {
+            this.logExtensionError(uuid, e);
+        }
+
         if (extension.stylesheet) {
             let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
             theme.unload_stylesheet(extension.stylesheet);
             delete extension.stylesheet;
         }
 
-        try {
-            extension.stateObj.disable();
-        } catch (e) {
-            this.logExtensionError(uuid, e);
-        }
-
         for (let i = 0; i < order.length; i++) {
             let otherUuid = order[i];
             try {
                 this.lookup(otherUuid).stateObj.enable();
             } catch (e) {
-- 
2.26.2