[Libreoffice-commits] online.git: kit/Kit.cpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Mon Jan 2 06:01:08 UTC 2017
kit/Kit.cpp | 41 ++++++++++++-----------------------------
1 file changed, 12 insertions(+), 29 deletions(-)
New commits:
commit d907c6b55437bfb32ff63ed4c6b7a30be6a81a07
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sat Dec 24 22:51:23 2016 -0500
wsd: exit Kit immediately after unloading last view
Also kill canDiscard and hasSessions, instead call
purgeSessions directly.
Change-Id: I437fd3620299bc7f694c6c8e9c55fb6dccbe34a0
Reviewed-on: https://gerrit.libreoffice.org/32609
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index c2c674e..ecc8dc7 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -531,7 +531,7 @@ public:
num_sessions = _sessions.size();
if (num_sessions == 0)
{
- LOG_INF("No more sessions, exiting bluntly");
+ LOG_INF("Document [" << _url << "] has no more views, exiting bluntly.");
std::_Exit(Application::EXIT_OK);
}
}
@@ -545,22 +545,6 @@ public:
return num_sessions;
}
- /// Returns true if at least one *live* connection exists.
- /// Does not consider user activity, just socket status.
- bool hasSessions()
- {
- // -ve values for failure.
- return purgeSessions() != 0;
- }
-
- /// Returns true if there is no activity and
- /// the document is saved.
- bool canDiscard()
- {
- //TODO: Implement proper time-out on inactivity.
- return !hasSessions();
- }
-
/// Set Document password for given URL
void setDocumentPassword(int nPasswordType)
{
@@ -941,18 +925,22 @@ private:
_loKitDocument->registerCallback(nullptr, nullptr);
_loKitDocument->destroyView(viewId);
_viewIdToCallbackDescr.erase(viewId);
- LOG_DBG("Destroyed view [" << viewId << "] with session [" <<
- sessionId << "] on url [" << _url << "].");
- // Get the list of view ids from the core
const int viewCount = _loKitDocument->getViewsCount();
- std::vector<int> viewIds(viewCount);
- _loKitDocument->getViewIds(viewIds.data(), viewCount);
-
LOG_INF("Document [" << _url << "] session [" <<
sessionId << "] unloaded view [" << viewId << "]. Have " <<
viewCount << " view" << (viewCount != 1 ? "s." : "."));
+ if (viewCount <= 0)
+ {
+ LOG_INF("Document [" << _url << "] has no more views, exiting bluntly.");
+ std::_Exit(Application::EXIT_OK);
+ }
+
+ // Get the list of view ids from the core
+ std::vector<int> viewIds(viewCount);
+ _loKitDocument->getViewIds(viewIds.data(), viewCount);
+
lockLokDoc.unlock();
// Broadcast updated view info
@@ -1703,11 +1691,6 @@ void lokit_main(const std::string& childRoot,
LOG_WRN("No document while processing " << tokens[0] << " request.");
}
}
- else if (document && document->canDiscard())
- {
- LOG_INF("Last session discarded. Terminating.");
- TerminationFlag = true;
- }
else
{
LOG_ERR("Bad or unknown token [" << tokens[0] << "]");
@@ -1718,7 +1701,7 @@ void lokit_main(const std::string& childRoot,
[]() {},
[]()
{
- if (document && document->canDiscard())
+ if (document && document->purgeSessions() == 0)
{
LOG_INF("Last session discarded. Terminating.");
TerminationFlag = true;
More information about the Libreoffice-commits
mailing list