net/Socket.cpp         |    5 +++++
 wsd/DocumentBroker.cpp |   21 +++++++++++++++++++++
 2 files changed, 26 insertions(+)

New commits:
commit c0706831b8f4c35d2a3b9939988c4894c44abebd
Author:     Tor Lillqvist <t...@collabora.com>
AuthorDate: Wed Jul 8 17:28:45 2020 +0300
Commit:     Tor Lillqvist <t...@collabora.com>
CommitDate: Wed Jul 8 17:35:40 2020 +0300

    Add comment describing what was not a good idea after all for the iOS app
    
    Change-Id: I43c760fa521f6a5860f2ed5dfef816ba5faaf463

diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index 009de809d..f198bb8e3 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -1436,6 +1436,27 @@ size_t DocumentBroker::removeSession(const std::string& 
id)
                 << ", LastEditableSession: " << lastEditableSession << ", 
DontSaveIfUnmodified: "
                 << dontSaveIfUnmodified << ", IsPossiblyModified: " << 
isPossiblyModified());
 
+        // In theory, we almost could do this here:
+
+        // #if MOBILEAPP
+        // There is always just one "session" in a mobile app, and the same 
one process continues
+        // running, so no need to delay the disconnectSessionInternal() call. 
Doing it like this
+        // will also get rid of the docbroker and lokit_main thread for the 
document quicker.
+
+        // But, in reality it has unintended side effects on iOS because if 
you have done changes to
+        // the document, it does get saved, but that is only to the temporary 
copy. It is only in
+        // the document callback handler for LOK_CALLBACK_UNO_COMMAND_RESULT 
that we then call the
+        // system API to save that copy back to where it came from. See the
+        // LOK_CALLBACK_UNO_COMMAND_RESULT case in 
ChildSession::loKitCallback() in
+        // ChildSession.cpp. If we did use the below code snippet here, the 
document callback would
+        // get unregistered right away in Document::onUnload in Kit.cpp.
+
+        // autoSave(isPossiblyModified(), dontSaveIfUnmodified);
+        // disconnectSessionInternal(id);
+        // stop("stopped");
+
+        // So just go down the same code path as for normal Online:
+
         // If last editable, save and don't remove until after uploading to 
storage.
         if (!lastEditableSession || !autoSave(isPossiblyModified(), 
dontSaveIfUnmodified))
             disconnectSessionInternal(id);
commit 980b7b04a6a2f97989b8dfed3941251eda8c09e0
Author:     Tor Lillqvist <t...@collabora.com>
AuthorDate: Wed Jul 8 17:19:02 2020 +0300
Commit:     Tor Lillqvist <t...@collabora.com>
CommitDate: Wed Jul 8 17:34:20 2020 +0300

    Add a FIXME
    
    Change-Id: I7d54f77c5661b04616c04d1807966b9e1ccea485

diff --git a/net/Socket.cpp b/net/Socket.cpp
index 2f35b5cce..98822919c 100644
--- a/net/Socket.cpp
+++ b/net/Socket.cpp
@@ -288,6 +288,11 @@ int SocketPoll::poll(int64_t timeoutMaxMicroS)
     }
 
     // This should only happen when we're stopping.
+
+    // FIXME: A few dozen lines above we have potentially inserted new 
elements in _pollSockets, so
+    // clearly its size can now be larger than what it was when we came to 
this function, which got
+    // saved in the size variable.
+
     if (_pollSockets.size() != size)
         return rc;
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to