Skip to content

Commit 956debc

Browse files
authored
Merge pull request #169 from jsb/fix-renderer-pool
fix widgets disappearing after several displays of a renderer
2 parents bdfb9f0 + b4d013b commit 956debc

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

js/src/_base/RendererPool.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ _.extend(KeyedCollection.prototype, {
2626
pop: function(key) {
2727
for (var i=0, l=this._collection.length; i < l; ++i) {
2828
var el = this._collection[i];
29-
if (el.key == key) {
29+
if (_.isEqual(el.key, key)) {
3030
this._collection.splice(i, 1);
3131
return el.value;
3232
}
@@ -55,6 +55,10 @@ _.extend(KeyedCollection.prototype, {
5555
}
5656
return null;
5757
},
58+
59+
length: function() {
60+
return this._collection.length;
61+
},
5862
});
5963

6064
function RendererPool() {
@@ -94,9 +98,12 @@ _.extend(RendererPool.prototype, {
9498
var renderer;
9599
console.debug('RendererPool.acquiring...');
96100

97-
if (this.freePool.length > 0) {
101+
if (this.freePool.length() > 0) {
98102

99103
renderer = this.freePool.pop(config);
104+
if (renderer) {
105+
renderer = renderer.renderer;
106+
}
100107
if (!renderer) {
101108
var oldRenderer = this.freePool.shift();
102109
renderer = this._replaceRenderer(oldRenderer, config);

0 commit comments

Comments
 (0)