[Libreoffice-commits] online.git: loleaflet/src
Mihai Varga
mihai.varga at collabora.com
Wed Jul 1 00:49:36 PDT 2015
loleaflet/src/layer/tile/GridLayer.js | 4 +++-
loleaflet/src/layer/tile/TileLayer.js | 17 +++++++++++++----
2 files changed, 16 insertions(+), 5 deletions(-)
New commits:
commit d0586f9267ed074b93acef720bcc1e37cb09cba4
Author: Mihai Varga <mihai.varga at collabora.com>
Date: Wed Jul 1 10:47:05 2015 +0300
Maintain an invalidation count for each tile
Count how many times a tile has been invalidated.
For each inalidation increase the counter and for each arrival
of the new tile decrease it.
Only cache tiles with the invalidation count equal to 0 because
when zooming, we might cancel previous requests and the tiles in the
old zoom layer are no longer valid
diff --git a/loleaflet/src/layer/tile/GridLayer.js b/loleaflet/src/layer/tile/GridLayer.js
index b095a2c..3137e6c 100644
--- a/loleaflet/src/layer/tile/GridLayer.js
+++ b/loleaflet/src/layer/tile/GridLayer.js
@@ -591,7 +591,9 @@ L.GridLayer = L.Layer.extend({
// FIXME: this _tileCache is used for prev/next slide; but it is
// dangerous in connection with typing / invalidation, so let's
// comment it out for now
- this._tileCache[key] = tile.el.src;
+ if (!(this._tiles[key]._invalidCount > 0)) {
+ this._tileCache[key] = tile.el.src;
+ }
L.DomUtil.remove(tile.el);
delete this._tiles[key];
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index bb245ed..276d763 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -341,6 +341,12 @@ L.TileLayer = L.GridLayer.extend({
var point2 = new L.Point(point1.x + this._tileWidthTwips, point1.y + this._tileHeightTwips);
var bounds = new L.Bounds(point1, point2);
if (invalidBounds.intersects(bounds)) {
+ if (this._tiles[key]._invalidCount) {
+ this._tiles[key]._invalidCount += 1;
+ }
+ else {
+ this._tiles[key]._invalidCount = 1;
+ }
this._map.socket.send('tile ' +
'part=' + coords.part + ' ' +
'width=' + this._tileSize + ' ' +
@@ -357,11 +363,11 @@ L.TileLayer = L.GridLayer.extend({
coords = this._keyToTileCoords(key);
var scale = this._map.getZoomScale(coords.z);
topLeftTwips = new L.Point(
- this.options.tileWidthTwips * scale * coords.x,
- this.options.tileHeightTwips * scale * coords.y);
+ this.options.tileWidthTwips / scale * coords.x,
+ this.options.tileHeightTwips / scale * coords.y);
bottomRightTwips = topLeftTwips.add(new L.Point(
- this.options.tileWidthTwips * scale,
- this.options.tileHeightTwips * scale));
+ this.options.tileWidthTwips / scale,
+ this.options.tileHeightTwips / scale));
bounds = new L.Bounds(topLeftTwips, bottomRightTwips);
if (invalidBounds.intersects(bounds)) {
delete this._tileCache[key];
@@ -414,6 +420,9 @@ L.TileLayer = L.GridLayer.extend({
if (tile.el.src) {
this._map._fadeAnimated = false;
}
+ if (this._tiles[key]._invalidCount && this._tiles[key]._invalidCount > 0) {
+ this._tiles[key]._invalidCount -= 1;
+ }
tile.el.src = 'data:image/png;base64,' + window.btoa(strBytes);
}
else {
More information about the Libreoffice-commits
mailing list