[Libreoffice-commits] online.git: loleaflet/src
Mihai Varga
mihai.mv13 at gmail.com
Tue Jun 23 03:47:20 PDT 2015
loleaflet/src/layer/tile/GridLayer.js | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
New commits:
commit b5cbd467d92bed75d340ffaf1b847229b32b0b1e
Author: Mihai Varga <mihai.mv13 at gmail.com>
Date: Tue Jun 23 13:44:35 2015 +0300
Cancel tile request for tiles out of the visible area
This provides a better scrolling experience
When a large enough number of tiles have been requested we know that
they will cover the whole viewing area so we're able to cancel the
previous (not yet fulfilled) requests
diff --git a/loleaflet/src/layer/tile/GridLayer.js b/loleaflet/src/layer/tile/GridLayer.js
index 48f11e1..bab0c23 100644
--- a/loleaflet/src/layer/tile/GridLayer.js
+++ b/loleaflet/src/layer/tile/GridLayer.js
@@ -39,6 +39,10 @@ L.GridLayer = L.Layer.extend({
this._viewReset();
this._update();
this._map._docLayer = this;
+ var mapDim = this._map.getSize();
+ this._maxVisibleTiles =
+ (Math.floor(mapDim.x / this._tileSize) + 2) *
+ (Math.floor(mapDim.y / this._tileSize) + 2);
},
beforeAdd: function (map) {
@@ -483,6 +487,18 @@ L.GridLayer = L.Layer.extend({
}
if (queue.length !== 0) {
+ if (queue.length > this._maxVisibleTiles) {
+ // we know that a new set of tiles that cover the whole view has been requested
+ // so we're able to cancel the previous requests that are being processed
+ this._map.socket.send('canceltiles');
+ for (var key in this._tiles) {
+ if (!this._tiles[key].loaded) {
+ L.DomUtil.remove(this._tiles[key].el);
+ delete this._tiles[key];
+ }
+ }
+ }
+
// if its the first batch of tiles to load
if (this._noTilesToLoad()) {
this.fire('loading');
More information about the Libreoffice-commits
mailing list