wsd/ClientSession.cpp | 15 +++++++++++---- wsd/ClientSession.hpp | 6 +++--- wsd/DocumentBroker.cpp | 2 ++ 3 files changed, 16 insertions(+), 7 deletions(-)
New commits: commit 54596dbcf9db8d3aa415734988e15390e4133830 Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Wed Aug 22 16:19:04 2018 +0200 Commit: Tamás Zolnai <tamas.zol...@collabora.com> CommitDate: Wed Aug 22 16:53:07 2018 +0200 Reset also the wireId map by canceltiles diff --git a/wsd/ClientSession.hpp b/wsd/ClientSession.hpp index 52855abf9..bebf985e0 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 cfd288507..b01d0753b 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -1452,6 +1452,8 @@ void DocumentBroker::cancelTileRequests(const std::shared_ptr<ClientSession>& se session->clearTileSubscription(); + session->resetWireIdMap(); + const std::string canceltiles = tileCache().cancelTiles(session); if (!canceltiles.empty()) { commit d0fb39cd76cf9097f8f5398a1f7202d4df6390f4 Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Wed Aug 22 16:13:07 2018 +0200 Commit: Tamás Zolnai <tamas.zol...@collabora.com> CommitDate: Wed Aug 22 16:53:01 2018 +0200 Handle negativ position value of clientvisiblearea Change-Id: I1bf1217e038d034167e1a5412d81a311ebbd83ed diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp index 01398fedb..b5494a539 100644 --- a/wsd/ClientSession.cpp +++ b/wsd/ClientSession.cpp @@ -1144,6 +1144,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; @@ -1155,11 +1162,11 @@ void ClientSession::handleTileInvalidation(const std::string& message, if(part == _clientSelectedPart || _isTextDocument) { // Iterate through visible tiles - for(int i = std::ceil(_clientVisibleArea._y1 / _tileHeightTwips); - i <= std::ceil(_clientVisibleArea._y2 / _tileHeightTwips); ++i) + for(int i = std::ceil(normalizedVisArea._y1 / _tileHeightTwips); + i <= std::ceil(normalizedVisArea._y2 / _tileHeightTwips); ++i) { - for(int j = std::ceil(_clientVisibleArea._x1 / _tileWidthTwips); - j <= std::ceil(_clientVisibleArea._x2 / _tileWidthTwips); ++j) + for(int j = std::ceil(normalizedVisArea._x1 / _tileWidthTwips); + j <= std::ceil(normalizedVisArea._x2 / _tileWidthTwips); ++j) { // Find tiles affected by invalidation Util::Rectangle tileRect (j * _tileWidthTwips, i * _tileHeightTwips, _tileWidthTwips, _tileHeightTwips); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits