common/Rectangle.hpp | 10 +++++ debian/changelog | 6 +++ loleaflet/src/layer/tile/GridLayer.js | 49 +++++++++++++----------- loolwsd.spec.in | 2 - wsd/ClientSession.cpp | 67 ++++++++++++++++++++++++++-------- wsd/ClientSession.hpp | 24 +++++++++--- wsd/DocumentBroker.cpp | 7 +++ wsd/TestStubs.cpp | 2 - wsd/TileCache.cpp | 2 - 9 files changed, 120 insertions(+), 49 deletions(-)
New commits: commit dad7321da957f3d5099dba56f1d707b0c7f7311b Author: Andras Timar <andras.ti...@collabora.com> AuthorDate: Tue Aug 28 10:58:05 2018 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Wed Aug 29 16:14:24 2018 +0200 Bump package version to 3.4.0-2 Change-Id: Ifbe9fb476ebc131f8f7f819939c206527ee1e5e3 (cherry picked from commit 65d15707baf7d9af51459805dd08c2aa340023c5) Signed-off-by: Andras Timar <andras.ti...@collabora.com> diff --git a/debian/changelog b/debian/changelog index 38969b61c..2953d0976 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +loolwsd (3.4.0-2) unstable; urgency=medium + + * see the git log: http://col.la/cool3 + + -- Andras Timar <andras.ti...@collabora.com> Thu, 28 Aug 2018 10:50:00 +0200 + loolwsd (3.4.0-1) unstable; urgency=medium * see the git log: http://col.la/cool3 diff --git a/loolwsd.spec.in b/loolwsd.spec.in index deafcde4d..0ab7cf170 100644 --- a/loolwsd.spec.in +++ b/loolwsd.spec.in @@ -12,7 +12,7 @@ Name: loolwsd%{name_suffix} Name: loolwsd %endif Version: @PACKAGE_VERSION@ -Release: 1%{?dist} +Release: 2%{?dist} %if 0%{?suse_version} == 1110 Group: Productivity/Office/Suite BuildRoot: %{_tmppath}/%{name}-%{version}-build commit 21108d433ec7f6d9278b7c2320268b9e50dd9138 Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Sun Aug 26 06:11:08 2018 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Wed Aug 29 16:14:10 2018 +0200 loleaflet: Request invalid tiles too by view change Change-Id: I43c65ce025d3b18bd664d2ad16107cf828bab300 (cherry picked from commit 9473908d45a884827356b504c5f768e2f29cc46b) Reviewed-on: https://gerrit.libreoffice.org/59650 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> (cherry picked from commit d331ddee38ff27cfad95ab821786c55fde85e29a) Signed-off-by: Andras Timar <andras.ti...@collabora.com> diff --git a/loleaflet/src/layer/tile/GridLayer.js b/loleaflet/src/layer/tile/GridLayer.js index a337e3835..3bd563639 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 6bcb833a9fc336d7c50383a42c1f904d954b9a83 Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Fri Aug 24 14:01:44 2018 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Wed Aug 29 16:14:04 2018 +0200 First forward invalidation to client and request tiles after (cherry picked from commit 1b01af36059623627fd8895353f028efc20ef26f) Change-Id: I48a9e5783312801468651e55f4c05d3c08ff9189 Reviewed-on: https://gerrit.libreoffice.org/59649 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> (cherry picked from commit c819651600a337627543a6855202468a8b6eae6e) Signed-off-by: Andras Timar <andras.ti...@collabora.com> diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp index ef3380199..00fd8373d 100644 --- a/wsd/ClientSession.cpp +++ b/wsd/ClientSession.cpp @@ -947,7 +947,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:") { commit df085d322d202687b9a6b1d9368d3c365dc543e7 Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Thu Aug 23 12:46:49 2018 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Wed Aug 29 16:13:57 2018 +0200 Drop too old tileID's from tiles-on-fly list So we can avoid that tile sending stop working because server is waiting for tileprocessed messages which will not arrive. Change-Id: I545346c50d49340999608aadac32b5190ede43c5 (cherry picked from commit 759d1fe72294b22669f19dabf28a4fcf4922af8c) Fix previous commit Change-Id: I7d3bce0132d124e52f7885c8cb3c26acc6f7b41d (cherry picked from commit 3bd7c6b5084bb2505cf0f2629450974e68b8c050) Go back using list for tilesOnFly It can handle duplicates which we need to have. Change-Id: Ia4cd813dd173bc538dd27953c4886d460b5b1c49 (cherry picked from commit 185b933353c670ef4639ada323ed2f803f209e70) Reviewed-on: https://gerrit.libreoffice.org/59648 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> (cherry picked from commit dce9d960fe8e059e8d60f0a93b88dba54f53a7ee) Signed-off-by: Andras Timar <andras.ti...@collabora.com> diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp index 9ed10cf30..ef3380199 100644 --- a/wsd/ClientSession.cpp +++ b/wsd/ClientSession.cpp @@ -51,7 +51,6 @@ ClientSession::ClientSession(const std::string& id, _tileWidthTwips(0), _tileHeightTwips(0), _isTextDocument(false), - _tilesOnFly(0), _tilesBeingRendered(0) { const size_t curConnections = ++LOOLWSD::NumConnections; @@ -342,7 +341,13 @@ bool ClientSession::_handleInput(const char *buffer, int length) sendTextFrame("error: cmd=tileprocessed kind=syntax"); return false; } - auto iter = std::find(_tilesOnFly.begin(), _tilesOnFly.end(), tileID); + + auto iter = std::find_if(_tilesOnFly.begin(), _tilesOnFly.end(), + [&tileID](const std::pair<std::string, std::chrono::steady_clock::time_point>& curTile) + { + return curTile.first == tileID; + }); + if(iter != _tilesOnFly.end()) _tilesOnFly.erase(iter); else @@ -1040,7 +1045,7 @@ Authorization ClientSession::getAuthorization() const void ClientSession::addTileOnFly(const TileDesc& tile) { - _tilesOnFly.push_back(generateTileID(tile)); + _tilesOnFly.push_back({generateTileID(tile), std::chrono::steady_clock::now()}); } void ClientSession::clearTilesOnFly() @@ -1048,6 +1053,24 @@ void ClientSession::clearTilesOnFly() _tilesOnFly.clear(); } +void ClientSession::removeOutdatedTilesOnFly() +{ + // Check only the beginning of the list, tiles are ordered by timestamp + bool continueLoop = true; + while(!_tilesOnFly.empty() && continueLoop) + { + auto tileIter = _tilesOnFly.begin(); + double elapsedTimeMs = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - tileIter->second).count(); + if(elapsedTimeMs > 3000) + { + LOG_WRN("Tracker tileID was dropped because of time out. Tileprocessed message did not arrive"); + _tilesOnFly.erase(tileIter); + } + else + continueLoop = false; + } +} + void ClientSession::onDisconnect() { LOG_INF(getName() << " Disconnected, current number of connections: " << LOOLWSD::NumConnections); @@ -1242,7 +1265,10 @@ void ClientSession::removeOutdatedTileSubscriptions() { double elapsedTime = docBroker->tileCache().getTileBeingRenderedElapsedTimeMs(*iterator); if(elapsedTime < 0.0 && elapsedTime > 5000.0) + { + LOG_WRN("Tracked TileBeingRendered was dropped because of time out."); _tilesBeingRendered.erase(iterator); + } else ++iterator; } diff --git a/wsd/ClientSession.hpp b/wsd/ClientSession.hpp index 13f0b141c..397f7b670 100644 --- a/wsd/ClientSession.hpp +++ b/wsd/ClientSession.hpp @@ -19,6 +19,8 @@ #include <Rectangle.hpp> #include <deque> #include <map> +#include <list> +#include <utility> #include <unordered_set> class DocumentBroker; @@ -125,6 +127,7 @@ public: void addTileOnFly(const TileDesc& tile); void clearTilesOnFly(); size_t getTilesOnFlyCount() const { return _tilesOnFly.size(); } + void removeOutdatedTilesOnFly(); Util::Rectangle getVisibleArea() const { return _clientVisibleArea; } int getTileWidthInTwips() const { return _tileWidthTwips; } @@ -230,7 +233,7 @@ private: bool _isTextDocument; /// TileID's of the sent tiles. Push by sending and pop by tileprocessed message from the client. - std::list<std::string> _tilesOnFly; + std::list<std::pair<std::string, std::chrono::steady_clock::time_point>> _tilesOnFly; /// Names of tiles requested from kit, which this session is subsrcibed to /// Track only non-thumbnail tiles (getId() == -1) diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index 913510064..9f9e63304 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -1401,6 +1401,8 @@ void DocumentBroker::sendRequestedTiles(const std::shared_ptr<ClientSession>& se // Update client's tilesBeingRendered list session->removeOutdatedTileSubscriptions(); + // Drop tiles which we are waiting for too long + session->removeOutdatedTilesOnFly(); // All tiles were processed on client side what we sent last time, so we can send a new banch of tiles // which was invalidated / requested in the meantime commit bc728a0fcc065d37d04396e67c4427a66d79f67c Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Wed Aug 22 23:20:27 2018 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Wed Aug 29 16:13:52 2018 +0200 Updated deduplicated tiles wireID Change-Id: Ia901d8831792de1bee6b21017be02fa1e744e2ee (cherry picked from commit 3ca4421eb73d17d8dc84fb46284d1746db078988) Reviewed-on: https://gerrit.libreoffice.org/59647 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> (cherry picked from commit 05d8d8667fa0c70d670048702172b7a860c9ee01) Signed-off-by: Andras Timar <andras.ti...@collabora.com> diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp index 35732eb94..9ed10cf30 100644 --- a/wsd/ClientSession.cpp +++ b/wsd/ClientSession.cpp @@ -1195,7 +1195,7 @@ void ClientSession::resetWireIdMap() _oldWireIds.clear(); } -void ClientSession::traceTileBySend(const TileDesc& tile) +void ClientSession::traceTileBySend(const TileDesc& tile, bool deduplicated) { const std::string tileID = generateTileID(tile); @@ -1217,7 +1217,8 @@ void ClientSession::traceTileBySend(const TileDesc& tile) } // Record that the tile is sent - addTileOnFly(tile); + if (!deduplicated) + addTileOnFly(tile); } void ClientSession::traceSubscribeToTile(const std::string& cacheName) diff --git a/wsd/ClientSession.hpp b/wsd/ClientSession.hpp index 04241d91b..13f0b141c 100644 --- a/wsd/ClientSession.hpp +++ b/wsd/ClientSession.hpp @@ -86,15 +86,13 @@ public: LOG_TRC(getName() << " enqueueing client message " << data->id()); size_t sizeBefore = _senderQueue.size(); size_t newSize = _senderQueue.enqueue(data); - if(sizeBefore != newSize) + + // Track sent tile + const std::string command = data->firstToken(); + if (command == "tile:") { - // Track sent tile - const std::string command = data->firstToken(); - if (command == "tile:") - { - const TileDesc tile = TileDesc::parse(data->firstLine()); - traceTileBySend(tile); - } + const TileDesc tile = TileDesc::parse(data->firstLine()); + traceTileBySend(tile, sizeBefore == newSize); } } @@ -134,7 +132,7 @@ public: /// This method updates internal data related to sent tiles (wireID and tiles-on-fly) /// Call this method anytime when a new tile is sent to the client - void traceTileBySend(const TileDesc& tile); + void traceTileBySend(const TileDesc& tile, bool deduplicated = false); /// Trask tiles what we a subscription to void traceSubscribeToTile(const std::string& tileCacheName); diff --git a/wsd/TestStubs.cpp b/wsd/TestStubs.cpp index d5407c11b..9a56e0a67 100644 --- a/wsd/TestStubs.cpp +++ b/wsd/TestStubs.cpp @@ -20,7 +20,7 @@ void DocumentBroker::assertCorrectThread() const {} -void ClientSession::traceTileBySend(const TileDesc& /*tile*/) {} +void ClientSession::traceTileBySend(const TileDesc& /*tile*/, bool /*deduplicated = false*/) {} void ClientSession::traceSubscribeToTile(const std::string& /*tileCacheName*/) {}; commit 6124994b346c21469ece24a3a3f83294e38f0b6f Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Wed Aug 22 16:19:04 2018 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Wed Aug 29 16:13:45 2018 +0200 Reset also the wireId map by canceltiles (cherry picked from commit 54596dbcf9db8d3aa415734988e15390e4133830) Change-Id: Ic9589363612d06a8d5d940ba5e5cbff796577c15 Reviewed-on: https://gerrit.libreoffice.org/59646 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> (cherry picked from commit 12a7d0df0dbcf29307f2ed92ef217c4024be5b66) Signed-off-by: Andras Timar <andras.ti...@collabora.com> diff --git a/wsd/ClientSession.hpp b/wsd/ClientSession.hpp index ff5975f1e..04241d91b 100644 --- a/wsd/ClientSession.hpp +++ b/wsd/ClientSession.hpp @@ -143,6 +143,9 @@ public: void clearTileSubscription(); size_t getTilesBeingRenderedCount() const {return _tilesBeingRendered.size();} + + /// Clear wireId map anytime when client visible area changes (visible area, zoom, part number) + void resetWireIdMap(); private: /// SocketHandler: disconnection event. @@ -184,9 +187,6 @@ private: void handleTileInvalidation(const std::string& message, const std::shared_ptr<DocumentBroker>& docBroker); - /// Clear wireId map anytime when client visible area changes (visible area, zoom, part number) - void resetWireIdMap(); - /// Generate a unique id for a tile std::string generateTileID(const TileDesc& tile); diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index 874d1c587..913510064 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -1473,6 +1473,10 @@ void DocumentBroker::cancelTileRequests(const std::shared_ptr<ClientSession>& se session->getRequestedTiles().clear(); + session->clearTileSubscription(); + + session->resetWireIdMap(); + const auto canceltiles = tileCache().cancelTiles(session); if (!canceltiles.empty()) { commit ab785d86ae9772eb992359ccafb419e5ad2bbd9c Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Tue Aug 21 17:15:02 2018 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Wed Aug 29 16:13:41 2018 +0200 Handle tiles hanging out the visible area A problem comes up when only a part of the tile is visible on the client side and invalidation affects the invisible part of this tile. To get back the old / right behavior we need to request this kind of tiles too. (cherry picked from commit 25e1a01a3c3df8bf412db7819536ed0a36196320) Handle negativ position value of clientvisiblearea Change-Id: I1bf1217e038d034167e1a5412d81a311ebbd83ed (cherry picked from commit d0fb39cd76cf9097f8f5398a1f7202d4df6390f4) Reviewed-on: https://gerrit.libreoffice.org/59645 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> (cherry picked from commit e7649f5b4535c60ced12da9ba1b9982b58cc3bdc) Signed-off-by: Andras Timar <andras.ti...@collabora.com> diff --git a/common/Rectangle.hpp b/common/Rectangle.hpp index 1300aa71a..6089f863d 100644 --- a/common/Rectangle.hpp +++ b/common/Rectangle.hpp @@ -78,6 +78,16 @@ struct Rectangle { return _x1 < _x2 && _y1 < _y2; } + + bool intersects(const Rectangle& rOther) + { + Util::Rectangle intersection; + intersection._x1 = std::max(_x1, rOther._x1); + intersection._y1 = std::max(_y1, rOther._y1); + intersection._x2 = std::min(_x2, rOther._x2); + intersection._y2 = std::min(_y2, rOther._y2); + return intersection.isValid(); + } }; } diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp index f5573c06c..35732eb94 100644 --- a/wsd/ClientSession.cpp +++ b/wsd/ClientSession.cpp @@ -1141,6 +1141,13 @@ void ClientSession::handleTileInvalidation(const std::string& message, return; } + // Visible area can have negativ value as position, but we have tiles only in the positiv range + Util::Rectangle normalizedVisArea; + normalizedVisArea._x1 = std::max(_clientVisibleArea._x1, 0); + normalizedVisArea._y1 = std::max(_clientVisibleArea._y1, 0); + normalizedVisArea._x2 = _clientVisibleArea._x2; + normalizedVisArea._y2 = _clientVisibleArea._y2; + std::pair<int, Util::Rectangle> result = TileCache::parseInvalidateMsg(message); int part = result.first; Util::Rectangle& invalidateRect = result.second; @@ -1151,18 +1158,16 @@ void ClientSession::handleTileInvalidation(const std::string& message, std::vector<TileDesc> invalidTiles; if(part == _clientSelectedPart || _isTextDocument) { - Util::Rectangle intersection; - intersection._x1 = std::max(invalidateRect._x1, _clientVisibleArea._x1); - intersection._y1 = std::max(invalidateRect._y1, _clientVisibleArea._y1); - intersection._x2 = std::min(invalidateRect._x2, _clientVisibleArea._x2); - intersection._y2 = std::min(invalidateRect._y2, _clientVisibleArea._y2); - if(intersection.isValid()) // Client visible area and invalidated rectangle has intersection + // Iterate through visible tiles + for(int i = std::ceil(normalizedVisArea._y1 / _tileHeightTwips); + i <= std::ceil(normalizedVisArea._y2 / _tileHeightTwips); ++i) { - for(int i = std::ceil(intersection._y1 / _tileHeightTwips); - i <= std::ceil(intersection._y2 / _tileHeightTwips); ++i) + for(int j = std::ceil(normalizedVisArea._x1 / _tileWidthTwips); + j <= std::ceil(normalizedVisArea._x2 / _tileWidthTwips); ++j) { - for(int j = std::ceil(intersection._x1 / _tileWidthTwips); - j <= std::ceil(intersection._x2 / _tileWidthTwips); ++j) + // Find tiles affected by invalidation + Util::Rectangle tileRect (j * _tileWidthTwips, i * _tileHeightTwips, _tileWidthTwips, _tileHeightTwips); + if(invalidateRect.intersects(tileRect)) { invalidTiles.emplace_back(TileDesc(part, _tileWidthPixel, _tileHeightPixel, j * _tileWidthTwips, i * _tileHeightTwips, _tileWidthTwips, _tileHeightTwips, -1, 0, -1, false)); commit 25780da4e1b51a3ef0e2b76b712028135b85c3bb Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Mon Jul 23 16:11:47 2018 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Wed Aug 29 16:13:34 2018 +0200 Trace sent tiles when they are actually sent SenderQueue might drop some tiles, so we were waiting for tileprocessed message for a tile which was not sent at all. Change-Id: I7c502966f656e46df7c22002dee19aeabbf97774 (cherry picked from commit b014804ce2229030a8816eb3c35a08f9af9e4676) Reviewed-on: https://gerrit.libreoffice.org/59644 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> (cherry picked from commit 4de17fe29436bbf2cc70db4be91d06f5dc451e43) Signed-off-by: Andras Timar <andras.ti...@collabora.com> diff --git a/wsd/ClientSession.hpp b/wsd/ClientSession.hpp index 4c86e87a1..ff5975f1e 100644 --- a/wsd/ClientSession.hpp +++ b/wsd/ClientSession.hpp @@ -84,7 +84,18 @@ public: docBroker->assertCorrectThread(); LOG_TRC(getName() << " enqueueing client message " << data->id()); - _senderQueue.enqueue(data); + size_t sizeBefore = _senderQueue.size(); + size_t newSize = _senderQueue.enqueue(data); + if(sizeBefore != newSize) + { + // Track sent tile + const std::string command = data->firstToken(); + if (command == "tile:") + { + const TileDesc tile = TileDesc::parse(data->firstLine()); + traceTileBySend(tile); + } + } } /// Set the save-as socket which is used to send convert-to results. diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index eb0c1f522..874d1c587 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -1438,7 +1438,6 @@ void DocumentBroker::sendRequestedTiles(const std::shared_ptr<ClientSession>& se cachedTile->read(output.data() + pos, size); cachedTile->close(); - session->traceTileBySend(tile); session->sendBinaryFrame(output.data(), output.size()); } else diff --git a/wsd/TileCache.cpp b/wsd/TileCache.cpp index 2702ba2b0..8e0da8cfe 100644 --- a/wsd/TileCache.cpp +++ b/wsd/TileCache.cpp @@ -221,7 +221,6 @@ void TileCache::saveTileAndNotify(const TileDesc& tile, const char *data, const auto firstSession = firstSubscriber.lock(); if (firstSession) { - firstSession->traceTileBySend(tile); firstSession->enqueueSendMessage(payload); } @@ -243,7 +242,6 @@ void TileCache::saveTileAndNotify(const TileDesc& tile, const char *data, const auto session = subscriber.lock(); if (session) { - session->traceTileBySend(tile); session->enqueueSendMessage(payload); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits