[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