loolwsd/ClientSession.cpp | 15 ++++++++------- loolwsd/ClientSession.hpp | 2 +- loolwsd/DocumentBroker.cpp | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-)
New commits: commit 76991dd325f5b90ab1d7ceb6a9f55d952154f701 Author: Ashod Nakashian <[email protected]> Date: Tue May 17 08:17:21 2016 -0400 loolwsd: disable editlock in multiview Change-Id: I4df2d8a321e160ce226c2e22aa754cd6e5b2c755 Reviewed-on: https://gerrit.libreoffice.org/25063 Reviewed-by: Ashod Nakashian <[email protected]> Tested-by: Ashod Nakashian <[email protected]> diff --git a/loolwsd/ClientSession.cpp b/loolwsd/ClientSession.cpp index 33615ed..49ba399 100644 --- a/loolwsd/ClientSession.cpp +++ b/loolwsd/ClientSession.cpp @@ -40,7 +40,7 @@ ClientSession::ClientSession(const std::string& id, LOOLSession(id, Kind::ToClient, ws), _docBroker(docBroker), _queue(queue), - _haveEditLock(false), + _haveEditLock(std::getenv("LOK_VIEW_CALLBACK")), _loadFailed(false), _loadPart(-1) { @@ -222,10 +222,9 @@ bool ClientSession::getStatus(const char *buffer, int length) sendTextFrame(status); // And let clients know if they hold the edit lock. - std::string message = "editlock: "; - message += std::to_string(isEditLocked()); - Log::debug("Forwarding [" + message + "] in response to status."); - sendTextFrame(message); + const auto msg = "editlock: " + std::to_string(isEditLocked()); + Log::debug("Returning [" + msg + "] in response to status."); + sendTextFrame(msg); return true; } @@ -243,8 +242,10 @@ bool ClientSession::getStatus(const char *buffer, int length) void ClientSession::setEditLock(const bool value) { // Update the sate and forward to child. - _haveEditLock = value; - const auto msg = std::string("editlock: ") + (value ? "1" : "0"); + markEditLock(value); + const auto msg = "editlock: " + std::to_string(isEditLocked()); + const auto mv = std::getenv("LOK_VIEW_CALLBACK") ? "1" : "0"; + Log::debug("Forwarding [" + msg + "] to set editlock to " + std::to_string(value) + ". MultiView: " + mv); forwardToPeer(msg.data(), msg.size()); } diff --git a/loolwsd/ClientSession.hpp b/loolwsd/ClientSession.hpp index 65891f7..2b5d0f0 100644 --- a/loolwsd/ClientSession.hpp +++ b/loolwsd/ClientSession.hpp @@ -27,7 +27,7 @@ public: virtual ~ClientSession(); void setEditLock(const bool value); - void markEditLock(const bool value) { _haveEditLock = value; } + void markEditLock(const bool value) { _haveEditLock = (value || std::getenv("LOK_VIEW_CALLBACK")); } bool isEditLocked() const { return _haveEditLock; } void setPeer(const std::shared_ptr<PrisonerSession>& peer) { _peer = peer; } diff --git a/loolwsd/DocumentBroker.cpp b/loolwsd/DocumentBroker.cpp index a7abd38..3bb2bcc 100644 --- a/loolwsd/DocumentBroker.cpp +++ b/loolwsd/DocumentBroker.cpp @@ -275,7 +275,7 @@ bool DocumentBroker::sendUnoSave() Log::info("Autosave triggered for doc [" + _docKey + "]."); Util::assertIsLocked(_mutex); - // Save using session holding the edit-lock + // Save using session holding the edit-lock (or first if multview). for (auto& sessionIt: _sessions) { if (sessionIt.second->isEditLocked()) _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
