ucb/source/ucp/webdav-curl/SerfLockStore.cxx | 28 ++++++++++++++++----------- ucb/source/ucp/webdav-curl/SerfLockStore.hxx | 7 +++--- 2 files changed, 21 insertions(+), 14 deletions(-)
New commits: commit 03c7cd9bbe3d46bb13a5cf1ad72ba0eaf702747e Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Thu Dec 23 17:27:58 2021 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Dec 27 17:05:02 2021 +0100 osl::Mutex->std::mutex in SerfLockStore Change-Id: I931e20b4b604ebd6fac83006deeabaa5939e8c7e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127587 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/ucb/source/ucp/webdav-curl/SerfLockStore.cxx b/ucb/source/ucp/webdav-curl/SerfLockStore.cxx index 932fb5262411..ec47278b843b 100644 --- a/ucb/source/ucp/webdav-curl/SerfLockStore.cxx +++ b/ucb/source/ucp/webdav-curl/SerfLockStore.cxx @@ -89,9 +89,9 @@ SerfLockStore::SerfLockStore() SerfLockStore::~SerfLockStore() { - osl::ResettableMutexGuard aGuard(m_aMutex); + std::unique_lock aGuard(m_aMutex); stopTicker(aGuard); - aGuard.reset(); // actually no threads should even try to access members now + aGuard.lock(); // actually no threads should even try to access members now m_bFinishing = true; // release active locks, if any. @@ -106,7 +106,7 @@ SerfLockStore::~SerfLockStore() void SerfLockStore::startTicker() { - osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); if ( !m_pTickerThread.is() ) { @@ -116,7 +116,7 @@ void SerfLockStore::startTicker() } -void SerfLockStore::stopTicker(osl::ClearableMutexGuard & rGuard) +void SerfLockStore::stopTicker(std::unique_lock<std::mutex> & rGuard) { rtl::Reference<TickerThread> pTickerThread; @@ -128,7 +128,7 @@ void SerfLockStore::stopTicker(osl::ClearableMutexGuard & rGuard) m_pTickerThread.clear(); } - rGuard.clear(); + rGuard.unlock(); if (pTickerThread.is() && pTickerThread->getIdentifier() != osl::Thread::getCurrentIdentifier()) { @@ -141,7 +141,7 @@ SerfLockStore::getLockTokenForURI(OUString const& rURI, css::ucb::Lock const*con { assert(rURI.startsWith("http://") || rURI.startsWith("https://")); - osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); auto const it(m_aLockInfoMap.find(rURI)); @@ -179,7 +179,7 @@ void SerfLockStore::addLock( const OUString& rURI, { assert(rURI.startsWith("http://") || rURI.startsWith("https://")); - osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); m_aLockInfoMap[ rURI ] = LockInfo(sToken, rLock, xSession, nLastChanceToSendRefreshRequest); @@ -189,10 +189,17 @@ void SerfLockStore::addLock( const OUString& rURI, void SerfLockStore::removeLock(const OUString& rURI) +{ + std::unique_lock aGuard( m_aMutex ); + + removeLockImpl(rURI); +} + +void SerfLockStore::removeLockImpl(const OUString& rURI) { assert(rURI.startsWith("http://") || rURI.startsWith("https://")); - osl::ClearableMutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); m_aLockInfoMap.erase(rURI); @@ -200,10 +207,9 @@ void SerfLockStore::removeLock(const OUString& rURI) stopTicker(aGuard); } - void SerfLockStore::refreshLocks() { - osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); ::std::vector<OUString> authFailedLocks; @@ -244,7 +250,7 @@ void SerfLockStore::refreshLocks() for (auto const& rLock : authFailedLocks) { - removeLock(rLock); + removeLockImpl(rLock); } } diff --git a/ucb/source/ucp/webdav-curl/SerfLockStore.hxx b/ucb/source/ucp/webdav-curl/SerfLockStore.hxx index 7e0757004c41..c3c645b66f2c 100644 --- a/ucb/source/ucp/webdav-curl/SerfLockStore.hxx +++ b/ucb/source/ucp/webdav-curl/SerfLockStore.hxx @@ -21,7 +21,7 @@ #pragma once #include <map> -#include <osl/mutex.hxx> +#include <mutex> #include <rtl/ref.hxx> #include <rtl/ustring.hxx> #include <com/sun/star/ucb/Lock.hpp> @@ -58,7 +58,7 @@ typedef std::map< OUString, LockInfo > LockInfoMap; class SerfLockStore { - osl::Mutex m_aMutex; + std::mutex m_aMutex; rtl::Reference< TickerThread > m_pTickerThread; bool m_bFinishing; LockInfoMap m_aLockInfoMap; @@ -82,8 +82,9 @@ public: void refreshLocks(); private: + void removeLockImpl(const OUString& rURI); void startTicker(); - void stopTicker(osl::ClearableMutexGuard & rGuard); + void stopTicker(std::unique_lock<std::mutex> & rGuard); }; } // namespace http_dav_ucp