summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorAndrea Pescetti <pescetti@apache.org>2016-09-06 19:13:44 +0000
committerStephan Bergmann <sbergman@redhat.com>2016-09-21 10:11:29 +0200
commit74ac65c49cc1d53b1aa93c2b7c720255867aace2 (patch)
treeffe99fe73636ecba7fd76d63673c2c5595f6887e /desktop
parent90fd9bdef5ad4254971e68c2174da470ef3822bc (diff)
#i114963# Enable IPC before OpenClients to allow client connections when printing.
Patch By: aptitude@btconnect.com (cherry picked from commit 602bd18953b23b7aa939cc118d2aa7cb24b172be) Conflicts: desktop/source/app/app.cxx
Diffstat (limited to 'desktop')
-rw-r--r--desktop/source/app/app.cxx16
1 files changed, 14 insertions, 2 deletions
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index da825bf7f2ae..0f039a913ce8 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -1931,9 +1931,21 @@ class ExitTimer : public Timer
IMPL_LINK_NOARG_TYPED(Desktop, OpenClients_Impl, void*, void)
{
try {
- 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 RequestHandler::AreRequestsPending() will always return false
+ //
+ // ALSO:
+ //
+ // Multiple clients may request simultaneous connections.
+ // When this server closes down it attempts to recreate the pipe (in RequestHander::Disable()).
+ // 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
RequestHandler::SetReady();
+ OpenClients();
CloseSplashScreen();
CheckFirstRun( );