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

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

    #i114963# Enable IPC before OpenClients to allow client connections when 
printing.
    
    Patch By: aptit...@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();
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to