kit/Kit.cpp | 12 ++++++++++-- net/WebSocketHandler.hpp | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-)
New commits: commit d458f35c1f17f74dfa17558b74b74ab5d9c3edeb Author: Gabriel Masei <gabriel.ma...@1and1.ro> AuthorDate: Fri Jul 24 19:50:43 2020 +0300 Commit: Gabriel Masei <gabriel.ma...@1and1.ro> CommitDate: Sat Jul 25 21:22:50 2020 +0200 kit: disable parallel processing at higher levels Sometimes multiple messages are processed in a single iteration at socket level. This happens in WebSocketHandler and when draining Document queue.Just covered these cases. Change-Id: Ifa46f5d484b67015cca64008b2c89426cc839e64 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/99387 Tested-by: Jenkins Tested-by: Gabriel Masei <gabriel.ma...@1and1.ro> Reviewed-by: Michael Meeks <michael.me...@collabora.com> Reviewed-by: Gabriel Masei <gabriel.ma...@1and1.ro> diff --git a/kit/Kit.cpp b/kit/Kit.cpp index 3ca92b01b..2ad1c545a 100644 --- a/kit/Kit.cpp +++ b/kit/Kit.cpp @@ -455,7 +455,8 @@ public: _isLoading(0), _editorId(-1), _editorChangeWarning(false), - _mobileAppDocId(mobileAppDocId) + _mobileAppDocId(mobileAppDocId), + _inputProcessingEnabled(true) { LOG_INF("Document ctor for [" << _docKey << "] url [" << anonymizeUrl(_url) << "] on child [" << _jailId << @@ -1388,6 +1389,9 @@ private: } public: + void enableProcessInput(bool enable = true){ _inputProcessingEnabled = enable; } + bool processInputEnabled() { return _inputProcessingEnabled; } + bool hasQueueItems() const { return _tileQueue && !_tileQueue->isEmpty(); @@ -1397,7 +1401,7 @@ public: { try { - while (hasQueueItems()) + while (processInputEnabled() && hasQueueItems()) { if (_stop || SigUtil::getTerminationFlag()) { @@ -1640,6 +1644,7 @@ private: #endif const unsigned _mobileAppDocId; + bool _inputProcessingEnabled; }; #ifdef __ANDROID__ @@ -1942,6 +1947,9 @@ protected: virtual void enableProcessInput(bool enable = true) override { WebSocketHandler::enableProcessInput(enable); + if (_document) + _document->enableProcessInput(enable); + // Wake up poll to process data from socket input buffer if (enable && _ksPoll) { diff --git a/net/WebSocketHandler.hpp b/net/WebSocketHandler.hpp index 615400798..9cab57118 100644 --- a/net/WebSocketHandler.hpp +++ b/net/WebSocketHandler.hpp @@ -422,7 +422,7 @@ public: #endif else { - while (handleTCPStream(socket)) + while (socket->processInputEnabled() && handleTCPStream(socket)) ; // might have multiple messages in the accumulated buffer. } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits