[Libreoffice-commits] core.git: Branch 'aoo/trunk' - desktop/source

Andrea Pescetti pescetti at apache.org
Tue Sep 6 20:09:11 UTC 2016


 desktop/source/app/app.cxx |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

New commits:
commit 602bd18953b23b7aa939cc118d2aa7cb24b172be
Author: Andrea Pescetti <pescetti at apache.org>
Date:   Tue Sep 6 19:13:44 2016 +0000

    #i114963# Enable IPC before OpenClients to allow client connections when printing.
    
    Patch By: aptitude at btconnect.com

diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index c3b4dc9..3210426 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -2533,9 +2533,21 @@ IMPL_LINK( Desktop, OpenClients_Impl, void*, EMPTYARG )
 {
     RTL_LOGFILE_PRODUCT_CONTEXT( aLog, "PERFORMANCE - DesktopOpenClients_Impl()" );
 
-    OpenClients();
-
+    // #114963#
+    // Enable IPC thread before OpenClients
+    //
+    // This is because it is possible for another client to connect during the OpenClients() call.
+    // This can happen on Windows when document is printed (not opened) and another client wants to print (when printing multiple documents).
+    // If the IPC thread is enabled after OpenClients, then the client will not be processed because the application will exit after printing. i.e OfficeIPCThread::AreRequestsPending() will always return false
+    //
+    // ALSO:
+    //
+    // Multiple clients may request simultaneous connections.
+    // When this server closes down it attempts to recreate the pipe (in DisableOfficeIPCThread()).
+    // It's possible that the client has a pending connection request.
+    // When the IPC thread is not running, this connection locks (because maPipe.accept()) is never called
     OfficeIPCThread::SetReady();
+    OpenClients();
 
     // CloseStartupScreen();
     CloseSplashScreen();


More information about the Libreoffice-commits mailing list