desktop/inc/app.hxx | 1 desktop/source/app/app.cxx | 22 ++------------ desktop/source/app/officeipcthread.cxx | 50 ++++++++++++--------------------- desktop/source/app/officeipcthread.hxx | 3 - 4 files changed, 24 insertions(+), 52 deletions(-)
New commits: commit b0041fd68ae1a9df91f8c3274e0b4003ef914a44 Author: Jesús Corrius <jcorr...@gmail.com> Date: Wed Aug 14 16:04:31 2013 +0200 Revert "Fixing i#119950 warn about other running terminal sessions" This reverts commit b218cbf59de4d7ae0a6962995fb0f719ed68b5d2. The original patch just looks for another instance running which of course can be in the same terminal session. The assumptions the author makes are wrong. The bug the patch tries to solve is real and we'll probably have to solve it in the future, but not this way. Conflicts: desktop/source/app/officeipcthread.cxx Change-Id: I1e645671aa09c6147163820c12d5efb3b3688bd1 Reviewed-on: https://gerrit.libreoffice.org/5415 Reviewed-by: Fridrich Strba <fridr...@documentfoundation.org> Tested-by: Fridrich Strba <fridr...@documentfoundation.org> diff --git a/desktop/inc/app.hxx b/desktop/inc/app.hxx index 04153ef..d949304 100644 --- a/desktop/inc/app.hxx +++ b/desktop/inc/app.hxx @@ -64,7 +64,6 @@ class Desktop : public Application BE_LANGUAGE_MISSING, BE_USERINSTALL_NOTENOUGHDISKSPACE, BE_USERINSTALL_NOWRITEACCESS, - BE_MULTISESSION_NOT_SUPPORTED, BE_OFFICECONFIG_BROKEN }; enum BootstrapStatus diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index c4e9729..b436ade 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -415,10 +415,7 @@ OUString MakeStartupConfigAccessErrorMessage( OUString const & aInternalErrMsg ) // are allowed. Otherwise we will force a "crash inside a crash". // Thats why we have to use a special native message box here which does not use yield :-) //============================================================================= - -// #i119950# Add a option that not to display the "Fatal Error" on dialog title -void FatalError(const OUString& sMessage, const bool isDisplayErrorString = true); -void FatalError(const OUString& sMessage, const bool isDisplayErrorString) +void FatalError(const OUString& sMessage) { OUString sProductKey = ::utl::Bootstrap::getProductKey(); if ( sProductKey.isEmpty()) @@ -432,9 +429,8 @@ void FatalError(const OUString& sMessage, const bool isDisplayErrorString) OUStringBuffer sTitle (128); sTitle.append (sProductKey ); - if (isDisplayErrorString) { - sTitle.appendAscii (" - Fatal Error"); - } + sTitle.appendAscii (" - Fatal Error"); + Application::ShowNativeErrorBox (sTitle.makeStringAndClear (), sMessage); _exit(EXITHELPER_FATAL_ERROR); } @@ -626,10 +622,6 @@ void Desktop::Init() { SetBootstrapError( BE_PATHINFO_MISSING, OUString() ); } - else if ( aStatus == OfficeIPCThread::IPC_STATUS_MULTI_TS_ERROR ) - { - SetBootstrapError( BE_MULTISESSION_NOT_SUPPORTED, OUString() ); - } else if ( aStatus == OfficeIPCThread::IPC_STATUS_2ND_OFFICE ) { // 2nd office startup should terminate after sending cmdlineargs through pipe @@ -856,13 +848,7 @@ OUString Desktop::CreateErrorMsgString( void Desktop::HandleBootstrapErrors( BootstrapError aBootstrapError, OUString const & aErrorMessage ) { - if ( aBootstrapError == BE_MULTISESSION_NOT_SUPPORTED ) { - OUString aMessage; - aMessage = GetMsgString( STR_BOOTSTRAP_ERR_MULTISESSION, - OUString( RTL_CONSTASCII_USTRINGPARAM( "You have another instance running in a different terminal session. Close that instance and then try again." )) ); - FatalError(aMessage,sal_False); - - } else if ( aBootstrapError == BE_PATHINFO_MISSING ) + if ( aBootstrapError == BE_PATHINFO_MISSING ) { OUString aErrorMsg; OUString aBuffer; diff --git a/desktop/source/app/officeipcthread.cxx b/desktop/source/app/officeipcthread.cxx index 14000eb..e897ee1 100644 --- a/desktop/source/app/officeipcthread.cxx +++ b/desktop/source/app/officeipcthread.cxx @@ -522,42 +522,30 @@ OfficeIPCThread::Status OfficeIPCThread::EnableOfficeIPCThread() do { osl::Security &rSecurity = Security::get(); - // #119950# Try to connect pipe first. If connected, means another instance already launched. - if ( pThread->maPipe.create( aPipeIdent.getStr(), osl_Pipe_OPEN, rSecurity )) - { - // #119950# Test if launched in a new terminal session for same user. On Windows platform, normally a user is resticted - // to have only one terminal session. But if mutiple terminal session for one user is allowed, crash will happen if launched - // LibreOffice from more than one terminal session. So need to detect and prevent this happen. - - // Will try to create a same name pipe. If creation is successfully, means current instance is launched in a new session. - osl::Pipe aSessionPipe; - if ( aSessionPipe.create( aPipeIdent.getStr(), osl_Pipe_OPEN, rSecurity )) { - // Can create a pipe with same name. This can only happen in multiple terminal session environment on Windows platform. - // Will display a warning dialog and exit. - return IPC_STATUS_MULTI_TS_ERROR; - } else { - osl::StreamPipe aStreamPipe(pThread->maPipe.getHandle()); - if (readStringFromPipe(aStreamPipe) == SEND_ARGUMENTS) - { - // Pipe connected to first office - nPipeMode = PIPEMODE_CONNECTED; - } - else - { - // Pipe connection failed (other office exited or crashed) - TimeValue tval; - tval.Seconds = 0; - tval.Nanosec = 500000000; - salhelper::Thread::wait( tval ); - } - } - } - else if ( pThread->maPipe.create( aPipeIdent.getStr(), osl_Pipe_CREATE, rSecurity )) // Connection not successfull, now we try to create + // Try to create pipe + if ( pThread->maPipe.create( aPipeIdent.getStr(), osl_Pipe_CREATE, rSecurity )) { // Pipe created nPipeMode = PIPEMODE_CREATED; } + else if( pThread->maPipe.create( aPipeIdent.getStr(), osl_Pipe_OPEN, rSecurity )) // Creation not successful, now we try to connect + { + osl::StreamPipe aStreamPipe(pThread->maPipe.getHandle()); + if (readStringFromPipe(aStreamPipe) == SEND_ARGUMENTS) + { + // Pipe connected to first office + nPipeMode = PIPEMODE_CONNECTED; + } + else + { + // Pipe connection failed (other office exited or crashed) + TimeValue tval; + tval.Seconds = 0; + tval.Nanosec = 500000000; + salhelper::Thread::wait( tval ); + } + } else { oslPipeError eReason = pThread->maPipe.getError(); diff --git a/desktop/source/app/officeipcthread.hxx b/desktop/source/app/officeipcthread.hxx index 223e371..a17e116 100644 --- a/desktop/source/app/officeipcthread.hxx +++ b/desktop/source/app/officeipcthread.hxx @@ -108,8 +108,7 @@ class OfficeIPCThread : public salhelper::Thread IPC_STATUS_OK, IPC_STATUS_2ND_OFFICE, IPC_STATUS_PIPE_ERROR, - IPC_STATUS_BOOTSTRAP_ERROR, - IPC_STATUS_MULTI_TS_ERROR + IPC_STATUS_BOOTSTRAP_ERROR }; // controlling pipe communication during shutdown
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits