sw/source/core/docnode/retrievedinputstreamdata.cxx | 13 +++++-------- sw/source/core/docnode/threadmanager.cxx | 13 +++++++------ sw/source/core/docnode/threadmanager.hxx | 8 ++++---- sw/source/core/inc/retrievedinputstreamdata.hxx | 6 +++--- 4 files changed, 19 insertions(+), 21 deletions(-)
New commits: commit 977e0bf1fc468976cf9b86df142807039623a71c Author: Noel Grandin <[email protected]> AuthorDate: Tue Dec 21 17:32:48 2021 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Sat Jan 1 13:14:20 2022 +0100 osl::Mutex->std::mutex in ThreadManager Change-Id: I9a7ad88b77222c3419ab5eee0859ecc931d6b0aa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127811 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/sw/source/core/docnode/threadmanager.cxx b/sw/source/core/docnode/threadmanager.cxx index 311c88e75a4d..20d71e746aea 100644 --- a/sw/source/core/docnode/threadmanager.cxx +++ b/sw/source/core/docnode/threadmanager.cxx @@ -71,7 +71,7 @@ oslInterlockedCount ThreadManager::AddThread( const rtl::Reference< ObservableThread >& rThread ) { - osl::MutexGuard aGuard(maMutex); + std::unique_lock aGuard(maMutex); // create new thread tThreadData aThreadData; @@ -89,7 +89,7 @@ oslInterlockedCount ThreadManager::AddThread( // add thread to manager if ( maStartedThreads.size() < snStartedSize && - !StartingOfThreadsSuspended() ) + !mbStartingOfThreadsSuspended ) { // Try to start thread if ( !StartThread( aThreadData ) ) @@ -116,7 +116,7 @@ void ThreadManager::RemoveThread( const oslInterlockedCount nThreadID, const bool bThreadFinished ) { // --> SAFE ---- - osl::MutexGuard aGuard(maMutex); + std::unique_lock aGuard(maMutex); std::deque< tThreadData >::iterator aIter = std::find_if( maStartedThreads.begin(), maStartedThreads.end(), @@ -143,6 +143,7 @@ void ThreadManager::RemoveThread( const oslInterlockedCount nThreadID, } // Try to start thread from waiting ones + aGuard.unlock(); TryToStartNewThread( nullptr ); } else @@ -205,9 +206,9 @@ bool ThreadManager::StartThread( const tThreadData& rThreadData ) IMPL_LINK_NOARG(ThreadManager, TryToStartNewThread, Timer *, void) { - osl::MutexGuard aGuard(maMutex); + std::unique_lock aGuard(maMutex); - if ( StartingOfThreadsSuspended() ) + if ( mbStartingOfThreadsSuspended ) return; // Try to start thread from waiting ones @@ -225,7 +226,7 @@ IMPL_LINK_NOARG(ThreadManager, TryToStartNewThread, Timer *, void) void ThreadManager::ResumeStartingOfThreads() { - osl::MutexGuard aGuard(maMutex); + std::unique_lock aGuard(maMutex); mbStartingOfThreadsSuspended = false; diff --git a/sw/source/core/docnode/threadmanager.hxx b/sw/source/core/docnode/threadmanager.hxx index 87a3d8b0b93d..ace0bc03164b 100644 --- a/sw/source/core/docnode/threadmanager.hxx +++ b/sw/source/core/docnode/threadmanager.hxx @@ -20,7 +20,7 @@ #pragma once #include <vcl/idle.hxx> -#include <osl/mutex.hxx> +#include <mutex> #include <osl/interlck.h> #include <rtl/ref.hxx> @@ -79,7 +79,7 @@ class ThreadManager final */ void SuspendStartingOfThreads() { - osl::MutexGuard aGuard(maMutex); + std::unique_lock aGuard(maMutex); mbStartingOfThreadsSuspended = true; } @@ -90,7 +90,7 @@ class ThreadManager final bool StartingOfThreadsSuspended() { - osl::MutexGuard aGuard(maMutex); + std::unique_lock aGuard(maMutex); return mbStartingOfThreadsSuspended; } @@ -111,7 +111,7 @@ class ThreadManager final static const std::deque< tThreadData >::size_type snStartedSize; - osl::Mutex maMutex; + std::mutex maMutex; css::uno::WeakReference< css::util::XJobManager > mrThreadJoiner; commit 34b67c5cb3338c4bd72f42df99a4b79ca1588071 Author: Noel Grandin <[email protected]> AuthorDate: Tue Dec 21 17:40:11 2021 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Sat Jan 1 13:14:06 2022 +0100 osl::Mutex->std::mutex in SwRetrievedInputStreamDataManager drop the locking call in IMPL_LINK( SwRetrievedInputStreamDataManager, LinkedInputStreamReady because it doesn't actually touch any related data and the lock is taken in the call to PopData. Change-Id: I2e679b97a1ce36e7d39a9a2818a9d62fd53009a0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127812 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/sw/source/core/docnode/retrievedinputstreamdata.cxx b/sw/source/core/docnode/retrievedinputstreamdata.cxx index 5612096c1fc4..311be07ca719 100644 --- a/sw/source/core/docnode/retrievedinputstreamdata.cxx +++ b/sw/source/core/docnode/retrievedinputstreamdata.cxx @@ -34,7 +34,7 @@ SwRetrievedInputStreamDataManager& SwRetrievedInputStreamDataManager::GetManager SwRetrievedInputStreamDataManager::tDataKey SwRetrievedInputStreamDataManager::ReserveData( std::weak_ptr< SwAsyncRetrieveInputStreamThreadConsumer > const & pThreadConsumer ) { - osl::MutexGuard aGuard(maMutex); + std::unique_lock aGuard(maMutex); // create empty data container for given thread Consumer tDataKey nDataKey( snNextKeyValue ); @@ -59,7 +59,7 @@ void SwRetrievedInputStreamDataManager::PushData( css::uno::Reference<css::io::XInputStream> const & xInputStream, const bool bIsStreamReadOnly ) { - osl::MutexGuard aGuard(maMutex); + std::unique_lock aGuard(maMutex); std::map< tDataKey, tData >::iterator aIter = maInputStreamData.find( nDataKey ); @@ -88,7 +88,7 @@ void SwRetrievedInputStreamDataManager::PushData( bool SwRetrievedInputStreamDataManager::PopData( const tDataKey nDataKey, tData& rData ) { - osl::MutexGuard aGuard(maMutex); + std::unique_lock aGuard(maMutex); bool bDataProvided( false ); @@ -115,9 +115,8 @@ bool SwRetrievedInputStreamDataManager::PopData( const tDataKey nDataKey, #i73788# Note: This method has to be run in the main thread. */ -IMPL_LINK( SwRetrievedInputStreamDataManager, - LinkedInputStreamReady, - void*, p, void ) +IMPL_STATIC_LINK( SwRetrievedInputStreamDataManager, LinkedInputStreamReady, + void*, p, void ) { SwRetrievedInputStreamDataManager::tDataKey* pDataKey = static_cast<SwRetrievedInputStreamDataManager::tDataKey*>(p); if ( !pDataKey ) @@ -125,8 +124,6 @@ IMPL_LINK( SwRetrievedInputStreamDataManager, return; } - osl::MutexGuard aGuard(maMutex); - SwRetrievedInputStreamDataManager& rDataManager = SwRetrievedInputStreamDataManager::GetManager(); SwRetrievedInputStreamDataManager::tData aInputStreamData; diff --git a/sw/source/core/inc/retrievedinputstreamdata.hxx b/sw/source/core/inc/retrievedinputstreamdata.hxx index 153bab8b1a0b..4a958b31bf19 100644 --- a/sw/source/core/inc/retrievedinputstreamdata.hxx +++ b/sw/source/core/inc/retrievedinputstreamdata.hxx @@ -21,7 +21,7 @@ #include <tools/link.hxx> #include <sal/types.h> -#include <osl/mutex.hxx> +#include <mutex> #include <com/sun/star/uno/Reference.hxx> #include <map> @@ -74,13 +74,13 @@ class SwRetrievedInputStreamDataManager bool PopData( const tDataKey nDataKey, tData& rData ); - DECL_LINK( LinkedInputStreamReady, void*, void ); + DECL_STATIC_LINK( SwRetrievedInputStreamDataManager, LinkedInputStreamReady, void*, void ); private: static tDataKey snNextKeyValue; - osl::Mutex maMutex; + std::mutex maMutex; std::map< tDataKey, tData > maInputStreamData; };
