[Libreoffice-commits] online.git: loolwsd/ChildProcessSession.cpp loolwsd/ChildProcessSession.hpp loolwsd/MasterProcessSession.cpp
Henry Castro
hcastro at collabora.com
Wed Apr 27 17:48:14 UTC 2016
loolwsd/ChildProcessSession.cpp | 30 +++++++++++++++---------------
loolwsd/ChildProcessSession.hpp | 1 -
loolwsd/MasterProcessSession.cpp | 5 -----
3 files changed, 15 insertions(+), 21 deletions(-)
New commits:
commit 200c6a9281dfd68b6a86bcc5b61f3951a384f40e
Author: Henry Castro <hcastro at collabora.com>
Date: Wed Apr 27 13:47:58 2016 -0400
loolwsd: rework setclientpart
diff --git a/loolwsd/ChildProcessSession.cpp b/loolwsd/ChildProcessSession.cpp
index a6cd86d..45ac69d 100644
--- a/loolwsd/ChildProcessSession.cpp
+++ b/loolwsd/ChildProcessSession.cpp
@@ -284,7 +284,6 @@ ChildProcessSession::ChildProcessSession(const std::string& id,
_multiView(std::getenv("LOK_VIEW_CALLBACK")),
_jailId(jailId),
_viewId(0),
- _clientPart(0),
_onLoad(onLoad),
_onUnload(onUnload),
_callbackWorker(new CallbackWorker(_callbackQueue, *this))
@@ -459,18 +458,6 @@ bool ChildProcessSession::_handleInput(const char *buffer, int length)
tokens[0] == "userinactive" ||
tokens[0] == "editlock:");
- {
- std::unique_lock<std::recursive_mutex> lock(Mutex);
-
- if (_multiView)
- _loKitDocument->pClass->setView(_loKitDocument, _viewId);
-
- if (_docType != "text" && _loKitDocument->pClass->getPart(_loKitDocument) != _clientPart)
- {
- _loKitDocument->pClass->setPart(_loKitDocument, _clientPart);
- }
- }
-
if (tokens[0] == "clientzoom")
{
return clientZoom(buffer, length, tokens);
@@ -593,7 +580,6 @@ bool ChildProcessSession::loadDocument(const char * /*buffer*/, int /*length*/,
if (_docType != "text" && part != -1)
{
- _clientPart = part;
_loKitDocument->pClass->setPart(_loKitDocument, part);
}
@@ -1345,11 +1331,25 @@ bool ChildProcessSession::saveAs(const char* /*buffer*/, int /*length*/, StringT
bool ChildProcessSession::setClientPart(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
+ int part;
if (tokens.count() < 2 ||
- !getTokenInteger(tokens[1], "part", _clientPart))
+ !getTokenInteger(tokens[1], "part", part))
{
+ sendTextFrame("error: cmd=setclientpart kind=invalid");
return false;
}
+
+ std::unique_lock<std::recursive_mutex> lock(Mutex);
+
+ if (part == _loKitDocument->pClass->getPart(_loKitDocument))
+ return true;
+
+ if (_multiView)
+ _loKitDocument->pClass->setView(_loKitDocument, _viewId);
+
+ _loKitDocument->pClass->setPart(_loKitDocument, part);
+ // invalidate all
+ loKitCallback(LOK_CALLBACK_INVALIDATE_TILES, std::string("EMPTY").c_str());
return true;
}
diff --git a/loolwsd/ChildProcessSession.hpp b/loolwsd/ChildProcessSession.hpp
index 3fb82b1..39b6d51 100644
--- a/loolwsd/ChildProcessSession.hpp
+++ b/loolwsd/ChildProcessSession.hpp
@@ -99,7 +99,6 @@ private:
const std::string _jailId;
/// View ID, returned by createView() or 0 by default.
int _viewId;
- int _clientPart;
std::map<int, std::string> _lastDocStates;
std::function<LibreOfficeKitDocument*(const std::string&, const std::string&, const std::string&, bool)> _onLoad;
std::function<void(const std::string&)> _onUnload;
diff --git a/loolwsd/MasterProcessSession.cpp b/loolwsd/MasterProcessSession.cpp
index 9ccab85..ee74bd0 100644
--- a/loolwsd/MasterProcessSession.cpp
+++ b/loolwsd/MasterProcessSession.cpp
@@ -351,11 +351,6 @@ bool MasterProcessSession::_handleInput(const char *buffer, int length)
dispatchChild();
}
- if (tokens[0] == "setclientpart")
- {
- _docBroker->tileCache().removeFile("status.txt");
- }
-
// Allow 'downloadas' for all kinds of views irrespective of editlock
if (_kind == Kind::ToClient && !isEditLocked() && tokens[0] != "downloadas" &&
tokens[0] != "userinactive" && tokens[0] != "useractive")
More information about the Libreoffice-commits
mailing list