desktop/source/app/app.cxx | 27 ++++++++------------------- desktop/source/app/dispatchwatcher.cxx | 16 ++++++---------- desktop/source/app/dispatchwatcher.hxx | 10 +++------- desktop/source/app/officeipcthread.cxx | 9 +++------ desktop/source/app/officeipcthread.hxx | 2 +- 5 files changed, 21 insertions(+), 43 deletions(-)
New commits: commit 0827a83a776e8be6329d1aa3caa72bf19431ad08 Author: Stephan Bergmann <sberg...@redhat.com> Date: Thu Mar 10 14:35:20 2016 +0100 Remove unnecessary class DispatchWatcherHashMap Change-Id: Ie73f964651aac4571ce0ddd56b5b821669188495 diff --git a/desktop/source/app/dispatchwatcher.cxx b/desktop/source/app/dispatchwatcher.cxx index 23ec0b8..9cdbf66 100644 --- a/desktop/source/app/dispatchwatcher.cxx +++ b/desktop/source/app/dispatchwatcher.cxx @@ -339,7 +339,7 @@ bool DispatchWatcher::executeDispatchRequests( const DispatchList& aDispatchRequ { ::osl::ClearableMutexGuard aGuard( GetMutex() ); // Remember request so we can find it in statusChanged! - m_aRequestContainer.insert( DispatchWatcherHashMap::value_type( aURL.Complete, (sal_Int32)1 ) ); + m_aRequestContainer.emplace(aURL.Complete, 1); m_nRequestCount++; } diff --git a/desktop/source/app/dispatchwatcher.hxx b/desktop/source/app/dispatchwatcher.hxx index 02cb7f3..aa44378 100644 --- a/desktop/source/app/dispatchwatcher.hxx +++ b/desktop/source/app/dispatchwatcher.hxx @@ -38,11 +38,6 @@ namespace desktop there is arose a problem. If there is none the office will be shutdown to prevent a running office without UI. */ - -class DispatchWatcherHashMap : public std::unordered_map< OUString, sal_Int32, OUStringHash, std::equal_to< OUString > > -{ -}; - class DispatchWatcher : public ::cppu::WeakImplHelper< css::frame::XDispatchResultListener > { public: @@ -95,7 +90,8 @@ class DispatchWatcher : public ::cppu::WeakImplHelper< css::frame::XDispatchResu static ::osl::Mutex& GetMutex(); - DispatchWatcherHashMap m_aRequestContainer; + std::unordered_map<OUString, sal_Int32, OUStringHash> + m_aRequestContainer; sal_Int16 m_nRequestCount; }; commit 0dcd3c9572f36aa1b19a8898a2378810e6251647 Author: Stephan Bergmann <sberg...@redhat.com> Date: Thu Mar 10 14:20:21 2016 +0100 Hold DispatchWatcher by rtl::Reference Change-Id: I2bdd63c864a5b1486f01907f9598a0c25a0f144d diff --git a/desktop/source/app/dispatchwatcher.cxx b/desktop/source/app/dispatchwatcher.cxx index 38cd636..23ec0b8 100644 --- a/desktop/source/app/dispatchwatcher.cxx +++ b/desktop/source/app/dispatchwatcher.cxx @@ -182,10 +182,9 @@ Mutex& DispatchWatcher::GetMutex() // Create or get the dispatch watcher implementation. This implementation must be // a singleton to prevent access to the framework after it wants to terminate. -DispatchWatcher* DispatchWatcher::GetDispatchWatcher() +rtl::Reference<DispatchWatcher> DispatchWatcher::GetDispatchWatcher() { - static Reference< XInterface > xDispatchWatcher; - static DispatchWatcher* pDispatchWatcher = nullptr; + static rtl::Reference<DispatchWatcher> xDispatchWatcher; if ( !xDispatchWatcher.is() ) { @@ -193,14 +192,11 @@ DispatchWatcher* DispatchWatcher::GetDispatchWatcher() if ( !xDispatchWatcher.is() ) { - pDispatchWatcher = new DispatchWatcher(); - - // We have to hold a reference to ourself forever to prevent our own destruction. - xDispatchWatcher = static_cast< cppu::OWeakObject *>( pDispatchWatcher ); + xDispatchWatcher = new DispatchWatcher(); } } - return pDispatchWatcher; + return xDispatchWatcher; } @@ -378,7 +374,7 @@ bool DispatchWatcher::executeDispatchRequests( const DispatchList& aDispatchRequ aArgs2[0].Value <<= sal_True; Reference < XNotifyingDispatch > xDisp( xDispatcher, UNO_QUERY ); if ( xDisp.is() ) - xDisp->dispatchWithNotification( aURL, aArgs2, DispatchWatcher::GetDispatchWatcher() ); + xDisp->dispatchWithNotification( aURL, aArgs2, DispatchWatcher::GetDispatchWatcher().get() ); else xDispatcher->dispatch( aURL, aArgs2 ); } diff --git a/desktop/source/app/dispatchwatcher.hxx b/desktop/source/app/dispatchwatcher.hxx index 338a44e..02cb7f3 100644 --- a/desktop/source/app/dispatchwatcher.hxx +++ b/desktop/source/app/dispatchwatcher.hxx @@ -85,7 +85,7 @@ class DispatchWatcher : public ::cppu::WeakImplHelper< css::frame::XDispatchResu virtual void SAL_CALL dispatchFinished( const css::frame::DispatchResultEvent& aEvent ) throw( css::uno::RuntimeException, std::exception ) override; // Access function to get a dispatcher watcher reference. There must be a global reference holder - static DispatchWatcher* GetDispatchWatcher(); + static rtl::Reference<DispatchWatcher> GetDispatchWatcher(); // execute new dispatch request bool executeDispatchRequests( const DispatchList& aDispatches, bool bNoTerminate = false ); diff --git a/desktop/source/app/officeipcthread.cxx b/desktop/source/app/officeipcthread.cxx index b672ce7..b0073a3 100644 --- a/desktop/source/app/officeipcthread.cxx +++ b/desktop/source/app/officeipcthread.cxx @@ -658,8 +658,7 @@ OfficeIPCThread::OfficeIPCThread() : Thread( "OfficeIPCThread" ), mbDowning( false ), mbRequestsEnabled( false ), - mnPendingRequests( 0 ), - mpDispatchWatcher( nullptr ) + mnPendingRequests( 0 ) { } @@ -667,8 +666,7 @@ OfficeIPCThread::~OfficeIPCThread() { ::osl::ClearableMutexGuard aGuard( GetMutex() ); - if ( mpDispatchWatcher ) - mpDispatchWatcher->release(); + mpDispatchWatcher.clear(); maPipe.close(); pGlobalOfficeIPCThread.clear(); } @@ -1079,10 +1077,9 @@ bool OfficeIPCThread::ExecuteCmdLineRequests( ProcessDocumentsRequest& aRequest return bShutdown; pGlobalOfficeIPCThread->mnPendingRequests += aDispatchList.size(); - if ( !pGlobalOfficeIPCThread->mpDispatchWatcher ) + if ( !pGlobalOfficeIPCThread->mpDispatchWatcher.is() ) { pGlobalOfficeIPCThread->mpDispatchWatcher = DispatchWatcher::GetDispatchWatcher(); - pGlobalOfficeIPCThread->mpDispatchWatcher->acquire(); } // copy for execute diff --git a/desktop/source/app/officeipcthread.hxx b/desktop/source/app/officeipcthread.hxx index e00593d..b8770c6 100644 --- a/desktop/source/app/officeipcthread.hxx +++ b/desktop/source/app/officeipcthread.hxx @@ -76,7 +76,7 @@ class OfficeIPCThread : public salhelper::Thread bool mbDowning; bool mbRequestsEnabled; int mnPendingRequests; - DispatchWatcher* mpDispatchWatcher; + rtl::Reference<DispatchWatcher> mpDispatchWatcher; /* condition to be set when the request has been processed */ ::osl::Condition cProcessed; commit 85ecc7d1dd54c20cbfc191ef4f4cf945bb59d267 Author: Stephan Bergmann <sberg...@redhat.com> Date: Thu Mar 10 14:08:22 2016 +0100 ProcessDocumentsRequest ctor inits pcProcessed to null Change-Id: I109f4acae9ac0a61004d06a82a479541f14cfd22 diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index 3cfd3e7..a7d97de 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -2354,8 +2354,6 @@ void Desktop::OpenClients() OfficeIPCThread::EnableRequests(); ProcessDocumentsRequest aRequest(rArgs.getCwdUrl()); - aRequest.pcProcessed = nullptr; - aRequest.aOpenList = rArgs.GetOpenList(); aRequest.aViewList = rArgs.GetViewList(); aRequest.aStartList = rArgs.GetStartList(); @@ -2482,7 +2480,6 @@ void Desktop::OpenDefault() } ProcessDocumentsRequest aRequest(rArgs.getCwdUrl()); - aRequest.pcProcessed = nullptr; aRequest.aOpenList.push_back(aName); OfficeIPCThread::ExecuteCmdLineRequests( aRequest ); } @@ -2607,8 +2604,6 @@ void Desktop::HandleAppEvent( const ApplicationEvent& rAppEvent ) std::vector<OUString> const & data(rAppEvent.GetStringsData()); docsRequest.aOpenList.insert( docsRequest.aOpenList.end(), data.begin(), data.end()); - docsRequest.pcProcessed = nullptr; - OfficeIPCThread::ExecuteCmdLineRequests(docsRequest); } } @@ -2626,8 +2621,6 @@ void Desktop::HandleAppEvent( const ApplicationEvent& rAppEvent ) std::vector<OUString> const & data(rAppEvent.GetStringsData()); docsRequest.aPrintList.insert( docsRequest.aPrintList.end(), data.begin(), data.end()); - docsRequest.pcProcessed = nullptr; - OfficeIPCThread::ExecuteCmdLineRequests(docsRequest); } } commit 5a9fa5ca17073f409b8ffc13d909b218b5bcb40d Author: Stephan Bergmann <sberg...@redhat.com> Date: Thu Mar 10 13:56:43 2016 +0100 No need for heap allocation here Change-Id: I34e96e3101f80398f238cdb5a94c00fee4b0faae diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index 2b4782c0..3cfd3e7 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -2603,15 +2603,13 @@ void Desktop::HandleAppEvent( const ApplicationEvent& rAppEvent ) const CommandLineArgs& rCmdLine = GetCommandLineArgs(); if ( !rCmdLine.IsInvisible() && !rCmdLine.IsTerminateAfterInit() ) { - ProcessDocumentsRequest* pDocsRequest = new ProcessDocumentsRequest( - rCmdLine.getCwdUrl()); + ProcessDocumentsRequest docsRequest(rCmdLine.getCwdUrl()); std::vector<OUString> const & data(rAppEvent.GetStringsData()); - pDocsRequest->aOpenList.insert( - pDocsRequest->aOpenList.end(), data.begin(), data.end()); - pDocsRequest->pcProcessed = nullptr; + docsRequest.aOpenList.insert( + docsRequest.aOpenList.end(), data.begin(), data.end()); + docsRequest.pcProcessed = nullptr; - OfficeIPCThread::ExecuteCmdLineRequests( *pDocsRequest ); - delete pDocsRequest; + OfficeIPCThread::ExecuteCmdLineRequests(docsRequest); } } break; @@ -2624,15 +2622,13 @@ void Desktop::HandleAppEvent( const ApplicationEvent& rAppEvent ) const CommandLineArgs& rCmdLine = GetCommandLineArgs(); if ( !rCmdLine.IsInvisible() && !rCmdLine.IsTerminateAfterInit() ) { - ProcessDocumentsRequest* pDocsRequest = new ProcessDocumentsRequest( - rCmdLine.getCwdUrl()); + ProcessDocumentsRequest docsRequest(rCmdLine.getCwdUrl()); std::vector<OUString> const & data(rAppEvent.GetStringsData()); - pDocsRequest->aPrintList.insert( - pDocsRequest->aPrintList.end(), data.begin(), data.end()); - pDocsRequest->pcProcessed = nullptr; + docsRequest.aPrintList.insert( + docsRequest.aPrintList.end(), data.begin(), data.end()); + docsRequest.pcProcessed = nullptr; - OfficeIPCThread::ExecuteCmdLineRequests( *pDocsRequest ); - delete pDocsRequest; + OfficeIPCThread::ExecuteCmdLineRequests(docsRequest); } } break; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits