[Libreoffice-commits] online.git: 6 commits - kit/Kit.cpp Mobile/Mobile net/Socket.hpp wsd/LOOLWSD.cpp
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Wed Oct 17 17:35:46 UTC 2018
Mobile/Mobile/DocumentViewController.mm | 4 +++-
kit/Kit.cpp | 5 +++++
net/Socket.hpp | 12 ++++++++++++
wsd/LOOLWSD.cpp | 8 --------
4 files changed, 20 insertions(+), 9 deletions(-)
New commits:
commit d1e550f01e113feff8819153becb4dd3035c21bf
Author: Tor Lillqvist <tml at collabora.com>
AuthorDate: Wed Oct 17 20:06:15 2018 +0300
Commit: Tor Lillqvist <tml at collabora.com>
CommitDate: Wed Oct 17 20:10:52 2018 +0300
Reset the global 'document' variable to null when not needed any more
Doesn't matter in "real" Online where the kit process will die shortly
after that ayway, but matters a lot in the mobile app, where there is
just one process all the time that handles document after document.
Now I can successfully load another document after closing the first
in the iOS app.
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index fd5869cde..10e1cb48b 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -2135,6 +2135,7 @@ protected:
{
LOG_TRC("Setting TerminationFlag due to 'exit' command from parent.");
TerminationFlag = true;
+ document.reset();
}
else if (tokens[0] == "tile" || tokens[0] == "tilecombine" || tokens[0] == "canceltiles" ||
tokens[0] == "paintwindow" ||
commit fb8e6dd820c876851c5c37af89605b82fdfde9a7
Author: Tor Lillqvist <tml at collabora.com>
AuthorDate: Wed Oct 17 20:04:20 2018 +0300
Commit: Tor Lillqvist <tml at collabora.com>
CommitDate: Wed Oct 17 20:10:52 2018 +0300
For MOBILEAPP, don't set TerminationFlag in KitWebSocketHandler::onDisconnect()
Helps in the struggle to get loading of another document after closing
the first to work.
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 1a36b8fe3..fd5869cde 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -2167,8 +2167,10 @@ protected:
void onDisconnect() override
{
+#ifndef MOBILEAPP
LOG_WRN("Kit connection lost without exit arriving from wsd. Setting TerminationFlag");
TerminationFlag = true;
+#endif
}
};
commit bd8d612c9fb9e8c172c7cc3eda010d424de7a606
Author: Tor Lillqvist <tml at collabora.com>
AuthorDate: Wed Oct 17 20:00:59 2018 +0300
Commit: Tor Lillqvist <tml at collabora.com>
CommitDate: Wed Oct 17 20:10:52 2018 +0300
In the MOBILEAPP case, don't set TerminationFlag when there are no sessions
The global TerminationFlag is an abomination that has caused lots of
trouble when developing the mobile app. The less we use it the better.
Here, it gets set elsewhere already when needed; just having no
sessions is not reason enough to set it.
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 5ea4ad563..1a36b8fe3 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -2492,11 +2492,13 @@ void lokit_main(
{
mainKit.poll(SocketPoll::DefaultPollTimeoutMs);
+#ifndef MOBILEAPP
if (document && document->purgeSessions() == 0)
{
LOG_INF("Last session discarded. Setting TerminationFlag");
TerminationFlag = true;
}
+#endif
}
LOG_INF("Kit poll terminated.");
commit 05c2782a815128609ce94aef86604aa8a42ed061
Author: Tor Lillqvist <tml at collabora.com>
AuthorDate: Wed Oct 17 19:55:25 2018 +0300
Commit: Tor Lillqvist <tml at collabora.com>
CommitDate: Wed Oct 17 20:10:52 2018 +0300
Empty out _newCallbacks when stopping a SocketPoll in the MOBILEAPP case
The wakeup() call in SocketPoll::stop() doesn't always (or ever?)
actually cause the wakeup code to be invoked and callbacks called
right after, and we don't want to risk the leftover callbacks being
invoked when the same SocketPoll object is started again. (This did
actually happen.)
In a normal Online, this is not a problem, as SocketPolls aren't
reused. One document per kit process, a separate kit process for each
document. Not so in a mobile app, there we have just one process that
handles document after document as the user closes one, opens another
(or the same anew), etc.
diff --git a/net/Socket.hpp b/net/Socket.hpp
index 8cc363f12..734d3696a 100644
--- a/net/Socket.hpp
+++ b/net/Socket.hpp
@@ -391,6 +391,18 @@ public:
{
LOG_DBG("Stopping " << _name << ".");
_stop = true;
+#ifdef MOBILEAPP
+ {
+ // We don't want to risk some callbacks in _newCallbacks being invoked when we start
+ // running a thread for this SocketPoll again.
+ std::lock_guard<std::mutex> lock(_mutex);
+ if (_newCallbacks.size() > 0)
+ {
+ LOG_TRC("_newCallbacks is non-empty, clearing it");
+ _newCallbacks.clear();
+ }
+ }
+#endif
wakeup();
}
commit 9e8a2d3c7e1d44e75ae27a40cfadf7f3425df648
Author: Tor Lillqvist <tml at collabora.com>
AuthorDate: Wed Oct 17 17:09:00 2018 +0300
Commit: Tor Lillqvist <tml at collabora.com>
CommitDate: Wed Oct 17 17:09:04 2018 +0300
Bin a couple of less useful LOG_INFs inside #ifndef MOBILEAPP
Always good to get rid of ifdefs.
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index c81862c44..448b92748 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -2844,10 +2844,6 @@ private:
std::shared_ptr<ServerSocket> findPrisonerServerPort(int& port)
{
std::shared_ptr<SocketFactory> factory = std::make_shared<PrisonerSocketFactory>();
-
-#ifndef MOBILEAPP
- LOG_INF("Trying to listen on prisoner port " << port << ".");
-#endif
std::shared_ptr<ServerSocket> socket = getServerSocket(
ServerSocket::Type::Local, port, PrisonerPoll, factory);
@@ -2883,10 +2879,6 @@ private:
/// Create the externally listening public socket
std::shared_ptr<ServerSocket> findServerPort(int port)
{
-#ifndef MOBILEAPP
- LOG_INF("Trying to listen on client port " << port << ".");
-#endif
-
std::shared_ptr<SocketFactory> factory;
#if ENABLE_SSL
commit 0af2a52b3415e6f564655a05efb1fa7724c37cf6
Author: Tor Lillqvist <tml at collabora.com>
AuthorDate: Wed Oct 17 15:59:19 2018 +0300
Commit: Tor Lillqvist <tml at collabora.com>
CommitDate: Wed Oct 17 15:59:19 2018 +0300
Add a completion handler that logs the success value
diff --git a/Mobile/Mobile/DocumentViewController.mm b/Mobile/Mobile/DocumentViewController.mm
index 3a6660dc0..32f211c5e 100644
--- a/Mobile/Mobile/DocumentViewController.mm
+++ b/Mobile/Mobile/DocumentViewController.mm
@@ -74,7 +74,9 @@
- (IBAction)dismissDocumentViewController {
[self dismissViewControllerAnimated:YES completion:^ {
- [self.document closeWithCompletionHandler:nil];
+ [self.document closeWithCompletionHandler:^(BOOL success){
+ NSLog(@"close completion handler gets %s", (success?"YES":"NO"));
+ }];
}];
}
More information about the Libreoffice-commits
mailing list