[Libreoffice-commits] online.git: 2 commits - wsd/ClientSession.cpp wsd/ClientSession.hpp wsd/DocumentBroker.cpp

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Aug 22 14:56:46 UTC 2018


 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.zolnai at collabora.com>
AuthorDate: Wed Aug 22 16:19:04 2018 +0200
Commit:     Tamás Zolnai <tamas.zolnai at 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.zolnai at collabora.com>
AuthorDate: Wed Aug 22 16:13:07 2018 +0200
Commit:     Tamás Zolnai <tamas.zolnai at 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);


More information about the Libreoffice-commits mailing list