www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

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:
Mchrome/content/zotero/xpcom/itemTreeView.js | 11++++++-----
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();