[Pkg-mozext-commits] [firetray] 343/399: keep long living references to timers
David Prévot
taffit at alioth.debian.org
Tue Oct 29 18:24:10 UTC 2013
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch dfsg-clean
in repository firetray.
commit a7c753e5b3034b6050604b5b20bbe931af41e6a3
Author: foudfou <foudil.newbie+git at gmail.com>
Date: Sun Mar 10 17:29:32 2013 +0100
keep long living references to timers
---
src/modules/FiretrayHandler.jsm | 69 ++++++++++++++++++++-----------------
src/modules/FiretrayMessaging.jsm | 1 -
src/modules/commons.js | 5 +++
3 files changed, 42 insertions(+), 33 deletions(-)
diff --git a/src/modules/FiretrayHandler.jsm b/src/modules/FiretrayHandler.jsm
index b6f2ce4..dd36bb9 100644
--- a/src/modules/FiretrayHandler.jsm
+++ b/src/modules/FiretrayHandler.jsm
@@ -31,6 +31,7 @@ let log = firetray.Logging.getLogger("firetray.Handler");
firetray.Handler = {
initialized: false,
+ timers: {},
inBrowserApp: false,
inMailApp: false,
appHasChat: false,
@@ -106,7 +107,9 @@ firetray.Handler = {
}
}
- if (this.isChatEnabled()) {
+ let chatIsEnabled = this.isChatEnabled();
+ log.info('isChatEnabled='+chatIsEnabled);
+ if (chatIsEnabled) {
Cu.import("resource://firetray/FiretrayMessaging.jsm"); // needed for existsChatAccount
Cu.import("resource://firetray/FiretrayChat.jsm");
firetray.Utils.addObservers(firetray.Handler, [
@@ -145,11 +148,9 @@ firetray.Handler = {
},
isChatEnabled: function() {
- let chatIsEnabled = (this.appHasChat &&
- Services.prefs.getBoolPref("mail.chat.enabled") &&
- firetray.Utils.prefService.getBoolPref("chat_icon_enable"));
- log.info('isChatEnabled='+chatIsEnabled);
- return chatIsEnabled;
+ return this.appHasChat &&
+ Services.prefs.getBoolPref("mail.chat.enabled") &&
+ firetray.Utils.prefService.getBoolPref("chat_icon_enable");
},
tryCloseLibs: function() {
@@ -192,16 +193,17 @@ firetray.Handler = {
case "before-first-paint":
log.debug("before-first-paint: "+subject.baseURI);
firetray.Utils.removeObservers(firetray.Handler, [ "before-first-paint" ]);
- firetray.Utils.timer(FIRETRAY_DELAY_BROWSER_STARTUP_MILLISECONDS,
- Ci.nsITimer.TYPE_ONE_SHOT, function() {
- if (firetray.Utils.prefService.getBoolPref('start_hidden')) {
- log.debug("start_hidden");
- firetray.Handler.hideAllWindows();
- }
-
- firetray.Handler.appStarted = true;
- log.debug("*** appStarted ***");
- });
+ firetray.Handler.timers['before-first-paint'] =
+ firetray.Utils.timer(FIRETRAY_DELAY_BROWSER_STARTUP_MILLISECONDS,
+ Ci.nsITimer.TYPE_ONE_SHOT, function() {
+ if (firetray.Utils.prefService.getBoolPref('start_hidden')) {
+ log.debug("start_hidden");
+ firetray.Handler.hideAllWindows();
+ }
+
+ firetray.Handler.appStarted = true;
+ log.debug("*** appStarted ***");
+ });
break;
case "xpcom-will-shutdown":
@@ -327,11 +329,12 @@ firetray.Handler = {
// FIXME: obviously we need to wait to avoid seg fault on jsapi.cpp:827
// 827 if (t->data.requestDepth) {
- firetray.Utils.timer(FIRETRAY_DELAY_NOWAIT_MILLISECONDS,
- Ci.nsITimer.TYPE_ONE_SHOT, function() {
- for(var key in firetray.Handler.windows) break;
- firetray.Handler.windows[key].chromeWin.open(home);
- });
+ firetray.Handler.timers['open-browser-window'] =
+ firetray.Utils.timer(FIRETRAY_DELAY_NOWAIT_MILLISECONDS,
+ Ci.nsITimer.TYPE_ONE_SHOT, function() {
+ for(var key in firetray.Handler.windows) break;
+ firetray.Handler.windows[key].chromeWin.open(home);
+ });
} catch (x) { log.error(x); }
},
@@ -346,12 +349,13 @@ firetray.Handler = {
quitApplication: function() {
try {
- firetray.Utils.timer(FIRETRAY_DELAY_NOWAIT_MILLISECONDS,
- Ci.nsITimer.TYPE_ONE_SHOT, function() {
- let appStartup = Cc['@mozilla.org/toolkit/app-startup;1']
- .getService(Ci.nsIAppStartup);
- appStartup.quit(Ci.nsIAppStartup.eAttemptQuit);
- });
+ firetray.Handler.timers['quit-application'] =
+ firetray.Utils.timer(FIRETRAY_DELAY_NOWAIT_MILLISECONDS,
+ Ci.nsITimer.TYPE_ONE_SHOT, function() {
+ let appStartup = Cc['@mozilla.org/toolkit/app-startup;1']
+ .getService(Ci.nsIAppStartup);
+ appStartup.quit(Ci.nsIAppStartup.eAttemptQuit);
+ });
} catch (x) { log.error(x); }
},
@@ -467,11 +471,12 @@ firetray.VersionChangeHandler = {
}
if (tabmail) {
- firetray.Utils.timer(FIRETRAY_DELAY_BROWSER_STARTUP_MILLISECONDS,
- Ci.nsITimer.TYPE_ONE_SHOT, function() {
- log.debug("openMailTab");
- tabmail.openTab("contentTab", {contentPage: url});
- });
+ firetray.Handler.timers['open-mail-tab'] =
+ firetray.Utils.timer(FIRETRAY_DELAY_BROWSER_STARTUP_MILLISECONDS,
+ Ci.nsITimer.TYPE_ONE_SHOT, function() {
+ log.debug("openMailTab");
+ tabmail.openTab("contentTab", {contentPage: url});
+ });
}
},
diff --git a/src/modules/FiretrayMessaging.jsm b/src/modules/FiretrayMessaging.jsm
index 5ee47a1..a1d3ee1 100644
--- a/src/modules/FiretrayMessaging.jsm
+++ b/src/modules/FiretrayMessaging.jsm
@@ -27,7 +27,6 @@ let log = firetray.Logging.getLogger("firetray.Messaging");
firetray.Messaging = {
initialized: false,
- cleaningTimer: null,
currentMsgCount: null,
newMsgCount: null,
observedTopics: {},
diff --git a/src/modules/commons.js b/src/modules/commons.js
index c0637c7..07b939a 100644
--- a/src/modules/commons.js
+++ b/src/modules/commons.js
@@ -225,6 +225,11 @@ firetray.Utils = {
return list;
},
+ /*
+ * keep a long-living reference to the returned timer, if you don't want to
+ * see it GC'ed ! see
+ * http://www.joshmatthews.net/blog/2011/03/nsitimer-anti-pattern/
+ */
timer: function(delay, timerType, callback) {
var timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
timer.initWithCallback({ notify: callback },
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/firetray.git
More information about the Pkg-mozext-commits
mailing list