[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