[Libreoffice-commits] online.git: 2 commits - loleaflet/src wsd/ClientSession.cpp

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Sun Aug 26 04:52:58 UTC 2018


 loleaflet/src/layer/tile/GridLayer.js |   49 ++++++++++++++++++----------------
 wsd/ClientSession.cpp                 |    5 +++
 2 files changed, 31 insertions(+), 23 deletions(-)

New commits:
commit 9473908d45a884827356b504c5f768e2f29cc46b
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Sun Aug 26 06:11:08 2018 +0200
Commit:     Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Sun Aug 26 06:52:21 2018 +0200

    loleaflet: Request invalid tiles too by view change
    
    Change-Id: I43c65ce025d3b18bd664d2ad16107cf828bab300

diff --git a/loleaflet/src/layer/tile/GridLayer.js b/loleaflet/src/layer/tile/GridLayer.js
index dc77255e9..ca4103077 100644
--- a/loleaflet/src/layer/tile/GridLayer.js
+++ b/loleaflet/src/layer/tile/GridLayer.js
@@ -532,7 +532,8 @@ L.GridLayer = L.Layer.extend({
 
 				key = this._tileCoordsToKey(coords);
 				var tile = this._tiles[key];
-				if (tile) {
+				var invalid = tile && tile._invalidCount && tile._invalidCount > 0;
+				if (tile && tile.loaded && !invalid) {
 					tile.current = true;
 					newView = false;
 				} else {
@@ -866,34 +867,36 @@ L.GridLayer = L.Layer.extend({
 			key = this._tileCoordsToKey(coords);
 
 			if (coords.part === this._selectedPart) {
-				var tile = this.createTile(this._wrapCoords(coords), L.bind(this._tileReady, this, coords));
+				if (!this._tiles[key]) {
+					var tile = this.createTile(this._wrapCoords(coords), L.bind(this._tileReady, this, coords));
 
-				this._initTile(tile);
+					this._initTile(tile);
 
-				// if createTile is defined with a second argument ("done" callback),
-				// we know that tile is async and will be ready later; otherwise
-				if (this.createTile.length < 2) {
-					// mark tile as ready, but delay one frame for opacity animation to happen
-					setTimeout(L.bind(this._tileReady, this, coords, null, tile), 0);
-				}
+					// if createTile is defined with a second argument ("done" callback),
+					// we know that tile is async and will be ready later; otherwise
+					if (this.createTile.length < 2) {
+						// mark tile as ready, but delay one frame for opacity animation to happen
+						setTimeout(L.bind(this._tileReady, this, coords, null, tile), 0);
+					}
 
-				// we prefer top/left over translate3d so that we don't create a HW-accelerated layer from each tile
-				// which is slow, and it also fixes gaps between tiles in Safari
-				L.DomUtil.setPosition(tile, tilePos, true);
+					// we prefer top/left over translate3d so that we don't create a HW-accelerated layer from each tile
+					// which is slow, and it also fixes gaps between tiles in Safari
+					L.DomUtil.setPosition(tile, tilePos, true);
 
-				// save tile in cache
-				this._tiles[key] = {
-					el: tile,
-					coords: coords,
-					current: true
-				};
+					// save tile in cache
+					this._tiles[key] = {
+						el: tile,
+						coords: coords,
+						current: true
+					};
 
-				fragment.appendChild(tile);
+					fragment.appendChild(tile);
 
-				this.fire('tileloadstart', {
-					tile: tile,
-					coords: coords
-				});
+					this.fire('tileloadstart', {
+						tile: tile,
+						coords: coords
+					});
+				}
 			}
 
 			if (this._tileCache[key]) {
commit 1b01af36059623627fd8895353f028efc20ef26f
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Fri Aug 24 14:01:44 2018 +0200
Commit:     Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Sun Aug 26 06:49:34 2018 +0200

    First forward invalidation to client and request tiles after

diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp
index 588a17ad5..4a61bbe49 100644
--- a/wsd/ClientSession.cpp
+++ b/wsd/ClientSession.cpp
@@ -950,7 +950,12 @@ bool ClientSession::handleKitToClientMessage(const char* buffer, const int lengt
         else if (tokens[0] == "invalidatetiles:")
         {
             assert(firstLine.size() == static_cast<std::string::size_type>(length));
+
+            // First forward invalidation
+            bool ret = forwardToClient(payload);
+
             handleTileInvalidation(firstLine, docBroker);
+            return ret;
         }
         else if (tokens[0] == "invalidatecursor:")
         {


More information about the Libreoffice-commits mailing list