[Libreoffice-commits] online.git: kit/Kit.cpp net/WebSocketHandler.hpp
Gabriel Masei (via logerrit)
logerrit at kemper.freedesktop.org
Sat Jul 25 19:23:09 UTC 2020
kit/Kit.cpp | 12 ++++++++++--
net/WebSocketHandler.hpp | 2 +-
2 files changed, 11 insertions(+), 3 deletions(-)
New commits:
commit d458f35c1f17f74dfa17558b74b74ab5d9c3edeb
Author: Gabriel Masei <gabriel.masei at 1and1.ro>
AuthorDate: Fri Jul 24 19:50:43 2020 +0300
Commit: Gabriel Masei <gabriel.masei at 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.masei at 1and1.ro>
Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
Reviewed-by: Gabriel Masei <gabriel.masei at 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.
}
}
More information about the Libreoffice-commits
mailing list