commit 99e5bce87c7c42c468fd7061dc36dbe0d89c5e5c
parent 6e064bb4ce97bc7ad9f7b0cff6797db107a79cc5
Author: Simon Kornblith <simon@simonster.com>
Date: Tue, 24 Jul 2012 03:12:22 -0400
Fix ReferenceError: timer is not defined from 0a9fad41246f098c3dad1cc72bdaaf634350e371
Diffstat:
1 file changed, 12 insertions(+), 24 deletions(-)
diff --git a/chrome/content/zotero/xpcom/zotero.js b/chrome/content/zotero/xpcom/zotero.js
@@ -183,15 +183,9 @@ Components.utils.import("resource://gre/modules/Services.jsm");
var _waitingForDBLock = false;
/**
- * Maintains nsITimers to be used when Zotero.wait() completes (to reduce performance penalty
- * of initializing new objects)
+ * Maintains callbacks to be called when Zotero.wait() completes
*/
- var _waitTimers = [];
-
- /**
- * Maintains nsITimerCallbacks to be used when Zotero.wait() completes
- */
- var _waitTimerCallbacks = [];
+ var _waitCallbacks = [];
/**
* Maintains running nsITimers in global scope, so that they don't disappear randomly
@@ -1453,12 +1447,9 @@ Components.utils.import("resource://gre/modules/Services.jsm");
_waiting--;
- // requeue nsITimerCallbacks that came up during Zotero.wait() but couldn't execute
- for(var i in _waitTimers) {
- _waitTimers[i].initWithCallback(_waitTimerCallbacks[i], 0, Components.interfaces.nsITimer.TYPE_ONE_SHOT);
- }
- _waitTimers = [];
- _waitTimerCallbacks = [];
+ // requeue callbacks that came up during Zotero.wait() but couldn't execute
+ for(var i in _waitCallbacks) Zotero.setTimeout(_waitCallbacks[i], 0);
+ _waitCallbacks = [];
//Zotero.debug("Waited " + cycles + " cycles");
return;
@@ -1490,12 +1481,9 @@ Components.utils.import("resource://gre/modules/Services.jsm");
win.clearInterval(intervalID);
- // requeue nsITimerCallbacks that came up during generator pumping but couldn't execute
- for(var i in _waitTimers) {
- _waitTimers[i].initWithCallback(_waitTimerCallbacks[i], 0, Components.interfaces.nsITimer.TYPE_ONE_SHOT);
- }
- _waitTimers = [];
- _waitTimerCallbacks = [];
+ // requeue callbacks that came up during generator pumping but couldn't execute
+ for(var i in _waitCallbacks) Zotero.setTimeout(_waitCallbacks[i], 0);
+ _waitCallbacks = [];
if(err) {
if(errorHandler) {
@@ -1530,17 +1518,17 @@ Components.utils.import("resource://gre/modules/Services.jsm");
* is executing
*/
this.setTimeout = function(func, ms, runWhenWaiting) {
- Services.appShell.hiddenDOMWindow.setTimeout(function() {
+ var callback = function() {
if(_waiting && !runWhenWaiting) {
// if our callback gets called during Zotero.wait(), queue it to be set again
// when Zotero.wait() completes
- _waitTimers.push(timer);
- _waitTimerCallbacks.push(timerCallback);
+ _waitCallbacks.push(callback);
} else {
// execute callback function
func();
}
- }, ms);
+ };
+ Services.appShell.hiddenDOMWindow.setTimeout(callback, ms);
}
/**