commit b7482bc7d65800037cb5aabc7835f200af68a2dd
parent 25e384de762cab08b991aceb8d1c055703ae7f9e
Author: Simon Kornblith <simon@simonster.com>
Date: Thu, 22 Sep 2011 06:24:08 +0000
Avoid yielding in the middle of a transaction because it could be problematic, and don't let other events run until after first yield.
Diffstat:
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js
@@ -74,7 +74,9 @@ Zotero.ItemTreeView.prototype._runCallbacks = function() {
Zotero.ItemTreeView.prototype.setTree = function(treebox)
{
var generator = this._setTreeGenerator(treebox);
- Zotero.pumpGenerator(generator);
+ if(generator.next()) {
+ Zotero.pumpGenerator(generator);
+ }
}
/**
@@ -199,6 +201,7 @@ Zotero.ItemTreeView.prototype._setTreeGenerator = function(treebox)
} catch(e) {
Zotero.logError(e);
}
+ yield false;
}
/**
@@ -254,8 +257,6 @@ Zotero.ItemTreeView.prototype._refreshGenerator = function()
Zotero.Items.cacheFields(cacheFields);
Zotero.ItemTreeView._haveCachedFields = true;
- if(this._waitAfter && Date.now() > this._waitAfter) yield true;
-
var newRows = this._itemGroup.getItems();
var added = 0;
@@ -278,8 +279,6 @@ Zotero.ItemTreeView.prototype._refreshGenerator = function()
added++;
}
this._searchItemIDs[newRows[i].id] = true;
-
- if(i % 100 === 0 && this._waitAfter && Date.now() > this._waitAfter) yield true;
}
// Add parents of matches if not matches themselves
@@ -292,6 +291,8 @@ Zotero.ItemTreeView.prototype._refreshGenerator = function()
}
Zotero.DB.commitTransaction();
+
+ if(this._waitAfter && Date.now() > this._waitAfter) yield true;
this._refreshHashMap();