loleaflet/src/layer/tile/CalcTileLayer.js | 18 ++++++++++-------- loleaflet/src/layer/tile/ImpressTileLayer.js | 18 ++++++++++-------- loleaflet/src/layer/tile/TileLayer.js | 2 ++ loleaflet/src/layer/tile/WriterTileLayer.js | 18 ++++++++++-------- 4 files changed, 32 insertions(+), 24 deletions(-)
New commits: commit fdd76332db6b9c3b59864132578dc01ce19f0214 Author: Tomaž Vajngerl <[email protected]> Date: Thu Jan 14 16:55:50 2016 +0100 Don't send unneccesary "tilecombine" on multiple invalidates It usually happens that we get more "invalidateTiles" requests from LO for one change. To avoid unnecessary tile rerenders we remember (in transientInvalidationKeys) all tile keys which we send to the server for rerendering and don't send the request for the same tile. This is effective until we get back a rerendered tile from the server (transientInvalidationKeys is cleared). diff --git a/loleaflet/src/layer/tile/CalcTileLayer.js b/loleaflet/src/layer/tile/CalcTileLayer.js index 8196c23..b09e2bb 100644 --- a/loleaflet/src/layer/tile/CalcTileLayer.js +++ b/loleaflet/src/layer/tile/CalcTileLayer.js @@ -48,14 +48,16 @@ L.CalcTileLayer = L.TileLayer.extend({ this._tiles[key]._invalidCount = 1; } if (visibleArea.intersects(bounds)) { - if (tilePositionsX !== "") - tilePositionsX += ','; - tilePositionsX += tileTopLeft.x; - - if (tilePositionsY !== "") - tilePositionsY += ','; - tilePositionsY += tileTopLeft.y; - needsNewTiles = true; + if (!this._transientInvalidationKeys[key]) { + if (tilePositionsX !== "") + tilePositionsX += ','; + tilePositionsX += tileTopLeft.x; + if (tilePositionsY !== "") + tilePositionsY += ','; + tilePositionsY += tileTopLeft.y; + needsNewTiles = true; + this._transientInvalidationKeys[key] = true; + } } else { // tile outside of the visible area, just remove it diff --git a/loleaflet/src/layer/tile/ImpressTileLayer.js b/loleaflet/src/layer/tile/ImpressTileLayer.js index de3cf4f..302f286 100644 --- a/loleaflet/src/layer/tile/ImpressTileLayer.js +++ b/loleaflet/src/layer/tile/ImpressTileLayer.js @@ -39,14 +39,16 @@ L.ImpressTileLayer = L.TileLayer.extend({ this._tiles[key]._invalidCount = 1; } if (visibleArea.intersects(bounds)) { - if (tilePositionsX !== "") - tilePositionsX += ','; - tilePositionsX += tileTopLeft.x; - - if (tilePositionsY !== "") - tilePositionsY += ','; - tilePositionsY += tileTopLeft.y; - needsNewTiles = true; + if (!this._transientInvalidationKeys[key]) { + if (tilePositionsX !== "") + tilePositionsX += ','; + tilePositionsX += tileTopLeft.x; + if (tilePositionsY !== "") + tilePositionsY += ','; + tilePositionsY += tileTopLeft.y; + needsNewTiles = true; + this._transientInvalidationKeys[key] = true; + } } else { // tile outside of the visible area, just remove it diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js index 04fe59c..3a88565 100644 --- a/loleaflet/src/layer/tile/TileLayer.js +++ b/loleaflet/src/layer/tile/TileLayer.js @@ -113,6 +113,7 @@ L.TileLayer = L.GridLayer.extend({ this._levels = {}; this._tiles = {}; this._tileCache = {}; + this._transientInvalidationKeys = {}; map._fadeAnimated = false; this._viewReset(); @@ -590,6 +591,7 @@ L.TileLayer = L.GridLayer.extend({ }, _onTileMsg: function (textMsg, img) { + this._transientInvalidationKeys = {}; var command = this._map._socket.parseServerCmd(textMsg); var coords = this._twipsToCoords(command); coords.z = command.zoom; diff --git a/loleaflet/src/layer/tile/WriterTileLayer.js b/loleaflet/src/layer/tile/WriterTileLayer.js index 3c0ad8f..ed9f81c 100644 --- a/loleaflet/src/layer/tile/WriterTileLayer.js +++ b/loleaflet/src/layer/tile/WriterTileLayer.js @@ -40,14 +40,16 @@ L.WriterTileLayer = L.TileLayer.extend({ this._tiles[key]._invalidCount = 1; } if (visibleArea.intersects(bounds)) { - if (tilePositionsX !== "") - tilePositionsX += ','; - tilePositionsX += tileTopLeft.x; - - if (tilePositionsY !== "") - tilePositionsY += ','; - tilePositionsY += tileTopLeft.y; - needsNewTiles = true; + if (!this._transientInvalidationKeys[key]) { + if (tilePositionsX !== "") + tilePositionsX += ','; + tilePositionsX += tileTopLeft.x; + if (tilePositionsY !== "") + tilePositionsY += ','; + tilePositionsY += tileTopLeft.y; + needsNewTiles = true; + this._transientInvalidationKeys[key] = true; + } } else { // tile outside of the visible area, just remove it
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
