diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2016-04-05 15:23:51 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2016-04-05 15:23:51 +0200 |
commit | 739cbf2e0952532f96cb74689fa5a3bc8be8eb11 (patch) | |
tree | 73f778904029c9e4e09e7f1b6f8c6c2e612ccd1d /desktop | |
parent | 3cdc8c27672e7e9253c9ca9abfc611a0f789da9c (diff) |
RequestHandler::Disable(join = false) is problematic
...as it causes ~RequestHandler to be called with mIpcThread still running,
triggering the assert in ~RequestHandler and keeping the thread potentially
still running during exit.
The odd SalMainPipeExchangeSignal_impl acting upong just SIGTERM (instead of
turning off the IPC thread early for each invocation of LO's signal handler,
say) is effectively like that ever since
ee3351d78c9b6ffbc4dfe62853e81b84e65879c7 "#89023# splash screen optimization";
just change it to use RequestHandler::SetDowning instead.
Change-Id: I238476706c2463130a6ede64a062d46af953ba6f
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/source/app/officeipcthread.cxx | 6 | ||||
-rw-r--r-- | desktop/source/app/officeipcthread.hxx | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/desktop/source/app/officeipcthread.cxx b/desktop/source/app/officeipcthread.cxx index 460d2c35d536..e9feb5caf483 100644 --- a/desktop/source/app/officeipcthread.cxx +++ b/desktop/source/app/officeipcthread.cxx @@ -300,7 +300,7 @@ void ImplPostProcessDocumentsEvent( ProcessDocumentsRequest* pEvent ) oslSignalAction SAL_CALL SalMainPipeExchangeSignal_impl(void* /*pData*/, oslSignalInfo* pInfo) { if( pInfo->Signal == osl_Signal_Terminate ) - RequestHandler::Disable(false); + RequestHandler::SetDowning(); return osl_Signal_ActCallNextHdl; } @@ -879,7 +879,7 @@ RequestHandler::Status PipeIpcThread::enable(rtl::Reference<IpcThread> * thread) } } -void RequestHandler::Disable(bool join) +void RequestHandler::Disable() { osl::ClearableMutexGuard aMutex( GetMutex() ); @@ -899,7 +899,7 @@ void RequestHandler::Disable(bool join) handler->cReady.set(); // exit gracefully and join - if (join && handler->mIpcThread.is()) + if (handler->mIpcThread.is()) { handler->mIpcThread->join(); handler->mIpcThread.clear(); diff --git a/desktop/source/app/officeipcthread.hxx b/desktop/source/app/officeipcthread.hxx index 1d3b2ccd9fb8..5e8957d1c165 100644 --- a/desktop/source/app/officeipcthread.hxx +++ b/desktop/source/app/officeipcthread.hxx @@ -120,7 +120,7 @@ class RequestHandler: public salhelper::SimpleReferenceObject // return sal_False if second office static Status Enable(bool ipc); - static void Disable(bool join = true); + static void Disable(); // start dispatching events... static void SetReady(); static void WaitForReady(); |