From 6d5e93b00b5b4ce5315276e071a98c8db5ff6463 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= 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