From 0b853aba4ecfb5f8ec481599cd21da95a0c30332 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Mon, 27 Dec 2010 12:39:49 -0500 Subject: [PATCH] Fix cleanup of styles during :rehash. --HG-- branch : bootstrapped --- common/bootstrap.js | 1 + common/modules/util.jsm | 25 +++++++++++-------------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/common/bootstrap.js b/common/bootstrap.js index 8baab0ea..89a63dec 100755 --- a/common/bootstrap.js +++ b/common/bootstrap.js @@ -190,6 +190,7 @@ function shutdown(data, reason) { services.observer.notifyObservers(null, "dactyl-purge", null); services.observer.notifyObservers(null, "dactyl-cleanup", null); + services.observer.notifyObservers(null, "dactyl-cleanup-modules", null); for (let factory in values(components)) // TODO: Categories; factory.unregister(); diff --git a/common/modules/util.jsm b/common/modules/util.jsm index 5eb226a2..c588df6d 100644 --- a/common/modules/util.jsm +++ b/common/modules/util.jsm @@ -98,7 +98,7 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]), obj._observe = observers; function register(meth) { - for (let target in set(["dactyl-cleanup", "quit-application"].concat(Object.keys(observers)))) + for (let target in set(["dactyl-cleanup-modules", "quit-application"].concat(Object.keys(observers)))) try { services.observer[meth](obj, target, true); } @@ -108,7 +108,7 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]), Class.replaceProperty(obj, "observe", function (subject, target, data) { try { - if (target == "quit-application" || target == "dactyl-cleanup") + if (target == "quit-application" || target == "dactyl-cleanup-modules") register("removeObserver"); if (observers[target]) observers[target].call(obj, subject, data); @@ -924,19 +924,16 @@ var Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]), }, observe: { - "dactyl-cleanup": function () { - util.dump("dactyl: util: observe: dactyl-cleanup"); - // Let window cleanup functions run synchronously before we - // destroy modules. - util.timeout(function () { - for (let module in values(defineModule.modules)) - if (module.cleanup) { - util.dump("cleanup: " + module.constructor.className); - util.trapErrors(module.cleanup, module); - } + "dactyl-cleanup-modules": function () { + util.dump("dactyl: util: observe: dactyl-cleanup-modules"); - services.observer.addObserver(this, "dactyl-rehash", true); - }); + for (let module in values(defineModule.modules)) + if (module.cleanup) { + util.dump("cleanup: " + module.constructor.className); + util.trapErrors(module.cleanup, module); + } + + services.observer.addObserver(this, "dactyl-rehash", true); }, "dactyl-rehash": function () { services.observer.removeObserver(this, "dactyl-rehash");