From 91b8df3106545d1466401fa4fb5188d461f29d5b Mon Sep 17 00:00:00 2001 From: Victor Powell Date: Tue, 18 Oct 2016 02:09:43 -0700 Subject: [PATCH 1/3] Prevent rendering from looping after zooming into raster tiles. --- js/source/source_cache.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/js/source/source_cache.js b/js/source/source_cache.js index c52bd2a63a5..44b52ce6117 100644 --- a/js/source/source_cache.js +++ b/js/source/source_cache.js @@ -254,9 +254,8 @@ class SourceCache extends Evented { return tile; } if (this._cache.has(coord.id)) { - this.addTile(coord); retain[coord.id] = true; - return this._tiles[coord.id]; + return this._cache.get(coord.id); } } } @@ -332,7 +331,10 @@ class SourceCache extends Evented { // The tile we require is not yet loaded. // Retain child or parent tiles that cover the same area. if (!this.findLoadedChildren(coord, maxCoveringZoom, retain)) { - this.findLoadedParent(coord, minCoveringZoom, retain); + var parent = this.findLoadedParent(coord, minCoveringZoom, retain); + if (parent) { + this.addTile(parent.coord); + } } } @@ -348,7 +350,10 @@ class SourceCache extends Evented { if (this.findLoadedChildren(coord, maxCoveringZoom, retain)) { retain[id] = true; } - this.findLoadedParent(coord, minCoveringZoom, parentsForFading); + var parent = this.findLoadedParent(coord, minCoveringZoom, parentsForFading); + if (parent) { + this.addTile(parent.coord); + } } } From b40c45c364c2963d3dc466564fe66a18d15b2bdd Mon Sep 17 00:00:00 2001 From: Victor Powell Date: Tue, 18 Oct 2016 11:50:15 -0700 Subject: [PATCH 2/3] Fix linting errors in source_cache. --- js/source/source_cache.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/js/source/source_cache.js b/js/source/source_cache.js index 44b52ce6117..0ccd66a4a4b 100644 --- a/js/source/source_cache.js +++ b/js/source/source_cache.js @@ -287,6 +287,7 @@ class SourceCache extends Evented { let i; let coord; let tile; + let parentTile; this.updateCacheSize(transform); @@ -331,9 +332,9 @@ class SourceCache extends Evented { // The tile we require is not yet loaded. // Retain child or parent tiles that cover the same area. if (!this.findLoadedChildren(coord, maxCoveringZoom, retain)) { - var parent = this.findLoadedParent(coord, minCoveringZoom, retain); - if (parent) { - this.addTile(parent.coord); + parentTile = this.findLoadedParent(coord, minCoveringZoom, retain); + if (parentTile) { + this.addTile(parentTile.coord); } } } @@ -350,9 +351,9 @@ class SourceCache extends Evented { if (this.findLoadedChildren(coord, maxCoveringZoom, retain)) { retain[id] = true; } - var parent = this.findLoadedParent(coord, minCoveringZoom, parentsForFading); - if (parent) { - this.addTile(parent.coord); + parentTile = this.findLoadedParent(coord, minCoveringZoom, parentsForFading); + if (parentTile) { + this.addTile(parentTile.coord); } } } From edee34a14ccea3a5950f4b07c951fb371bb2356e Mon Sep 17 00:00:00 2001 From: Victor Powell Date: Tue, 18 Oct 2016 13:09:19 -0700 Subject: [PATCH 3/3] Fix source_cache tests --- test/js/source/source_cache.test.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/js/source/source_cache.test.js b/test/js/source/source_cache.test.js index faa76b27452..01f73c5d45b 100644 --- a/test/js/source/source_cache.test.js +++ b/test/js/source/source_cache.test.js @@ -737,7 +737,7 @@ test('SourceCache#findLoadedParent', (t) => { t.end(); }); - t.test('adds from cache', (t) => { + t.test('retains parents', (t) => { const sourceCache = createSourceCache({}); sourceCache.onAdd(); const tr = new Transform(); @@ -756,7 +756,6 @@ test('SourceCache#findLoadedParent', (t) => { t.equal(sourceCache.findLoadedParent(new TileCoord(2, 0, 0), 0, retain), tile); t.deepEqual(retain, expectedRetain); t.equal(sourceCache._cache.order.length, 0); - t.equal(sourceCache._tiles[tile.coord.id], tile); t.end(); });