diff --git a/kit/Kit.cpp b/kit/Kit.cpp index e83e1e4a54..5ef0447a61 100644 --- a/kit/Kit.cpp +++ b/kit/Kit.cpp @@ -711,7 +711,6 @@ Document::Document(const std::shared_ptr& loKit, _editorChangeWarning(false), _lastMemTrimTime(std::chrono::steady_clock::now()), _mobileAppDocId(mobileAppDocId), - _inputProcessingEnabled(true), _duringLoad(0) { LOG_INF("Document ctor for [" << _docKey << @@ -2090,13 +2089,12 @@ void Document::checkIdle() ProcessToIdleDeadline = std::chrono::steady_clock::now() - std::chrono::milliseconds(10); } -void Document::enableProcessInput(bool enable) +bool Document::processInputEnabled() const { - LOG_TRC("Document - input processing now: " << - (enable ? "enabled" : "disabled") << - " was " << - (_inputProcessingEnabled ? "enabled" : "disabled")); - _inputProcessingEnabled = enable; + bool enabled = !_websocketHandler || _websocketHandler->processInputEnabled(); + if (!enabled) + LOG_TRC("Document - not processing input"); + return enabled; } void Document::drainQueue() @@ -2285,7 +2283,7 @@ void Document::dumpState(std::ostream& oss) << "\n\teditorId: " << _editorId << "\n\teditorChangeWarning: " << _editorChangeWarning << "\n\tmobileAppDocId: " << _mobileAppDocId - << "\n\tinputProcessingEnabled: " << _inputProcessingEnabled + << "\n\tinputProcessingEnabled: " << processInputEnabled() << "\n\tduringLoad: " << _duringLoad << "\n"; diff --git a/kit/Kit.hpp b/kit/Kit.hpp index 78b94cf5ed..e368847d95 100644 --- a/kit/Kit.hpp +++ b/kit/Kit.hpp @@ -374,8 +374,7 @@ private: bool isTileRequestInsideVisibleArea(const TileCombined& tileCombined); public: - void enableProcessInput(bool enable = true); - bool processInputEnabled() const { return _inputProcessingEnabled; } + bool processInputEnabled() const; bool hasQueueItems() const { return _tileQueue && !_tileQueue->isEmpty(); } // poll is idle, are we ? @@ -453,7 +452,6 @@ private: #endif const unsigned _mobileAppDocId; - bool _inputProcessingEnabled; int _duringLoad; }; diff --git a/kit/KitWebSocket.cpp b/kit/KitWebSocket.cpp index d5553ef5de..5c1e31911e 100644 --- a/kit/KitWebSocket.cpp +++ b/kit/KitWebSocket.cpp @@ -157,9 +157,11 @@ void KitWebSocketHandler::handleMessage(const std::vector& data) void KitWebSocketHandler::enableProcessInput(bool enable) { + LOG_TRC("Kit socket - input processing now: " << + (enable ? "enabled" : "disabled") << + " was " << + (WebSocketHandler::processInputEnabled() ? "enabled" : "disabled")); 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 6d2823d566..10448a1522 100644 --- a/net/WebSocketHandler.hpp +++ b/net/WebSocketHandler.hpp @@ -691,6 +691,15 @@ public: return sendFrame(socket, data, len, WSFrameMask::Fin | static_cast(code), flush); } + virtual bool processInputEnabled() const override + { + std::shared_ptr socket = _socket.lock(); + if (socket) + return socket->processInputEnabled(); + + return true; + } + protected: #if !MOBILEAPP @@ -1039,15 +1048,6 @@ protected: socket->enableProcessInput(enable); } - virtual bool processInputEnabled() const override - { - std::shared_ptr socket = _socket.lock(); - if (socket) - return socket->processInputEnabled(); - - return false; - } - virtual void gotPing(WSOpCode /* code */, int /* pingTimeUs */) { }