wsd/ClientSession.cpp | 5 +++++ wsd/ClientSession.hpp | 2 ++ wsd/DocumentBroker.cpp | 1 + wsd/SenderQueue.hpp | 9 +++++++++ wsd/TileCache.cpp | 5 +++-- 5 files changed, 20 insertions(+), 2 deletions(-)
New commits: commit 0bb96131c495dfe1d98ebbfe01df5c4268d16de8 Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Tue Jul 31 13:03:05 2018 +0200 Commit: Tamás Zolnai <tamas.zol...@collabora.com> CommitDate: Tue Jul 31 13:18:44 2018 +0200 Cancel tiles also in wsd's senderqueue Change-Id: I683b3cacee2f87d0dc0f28ad9ac3e122bcd043f1 diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp index b421d3304..886a3dcec 100644 --- a/wsd/ClientSession.cpp +++ b/wsd/ClientSession.cpp @@ -1040,6 +1040,11 @@ bool ClientSession::handleKitToClientMessage(const char* buffer, const int lengt return forwardToClient(payload); } +void ClientSession::cancelTilesInQueue() +{ + _senderQueue.cancelTiles(); +} + bool ClientSession::forwardToClient(const std::shared_ptr<Message>& payload) { if (isCloseFrame()) diff --git a/wsd/ClientSession.hpp b/wsd/ClientSession.hpp index fe565a672..8d434f44a 100644 --- a/wsd/ClientSession.hpp +++ b/wsd/ClientSession.hpp @@ -100,6 +100,8 @@ public: } } + void cancelTilesInQueue(); + /// Set the save-as socket which is used to send convert-to results. void setSaveAsSocket(const std::shared_ptr<StreamSocket>& socket) { diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index 84ad69a15..e6ead209a 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -1445,6 +1445,7 @@ void DocumentBroker::cancelTileRequests(const std::shared_ptr<ClientSession>& se // Clear tile requests session->clearTilesOnFly(); session->getRequestedTiles() = boost::none; + session->cancelTilesInQueue(); const std::string canceltiles = tileCache().cancelTiles(session); if (!canceltiles.empty()) diff --git a/wsd/SenderQueue.hpp b/wsd/SenderQueue.hpp index fc3464b3f..927e3e735 100644 --- a/wsd/SenderQueue.hpp +++ b/wsd/SenderQueue.hpp @@ -84,6 +84,15 @@ public: } } + void cancelTiles() + { + std::remove_if(_queue.begin(), _queue.end(), + [](const queue_item_t& cur) + { + return cur->firstToken() == "tile:"; + }); + } + private: /// Deduplicate messages based on the new one. /// Returns true if the new message should be diff --git a/wsd/TileCache.cpp b/wsd/TileCache.cpp index f80f64a1c..efa68e4ba 100644 --- a/wsd/TileCache.cpp +++ b/wsd/TileCache.cpp @@ -529,7 +529,7 @@ std::string TileCache::cancelTiles(const std::shared_ptr<ClientSession> &subscri assertCorrectThread(); - const ClientSession* sub = subscriber.get(); + ClientSession* sub = subscriber.get(); std::ostringstream oss; @@ -564,7 +564,8 @@ std::string TileCache::cancelTiles(const std::shared_ptr<ClientSession> &subscri ++it; } - subscriber->clearSubscription(); + if(sub) + sub->clearSubscription(); const std::string canceltiles = oss.str(); return canceltiles.empty() ? canceltiles : "canceltiles " + canceltiles; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits