ucb/source/sorter/sortdynres.cxx | 44 ++++++++++++++------------------------- ucb/source/sorter/sortdynres.hxx | 6 ++--- 2 files changed, 19 insertions(+), 31 deletions(-)
New commits: commit f8dc080dd021e352054d41b3c3f34e46028ecf5a Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Thu Feb 16 20:06:14 2023 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Feb 17 07:20:13 2023 +0000 osl::Mutex->std::mutex in SortedDynamicResultSet Change-Id: I21b98831645e2d7942bdf630225c136f9af3dca3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147189 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/ucb/source/sorter/sortdynres.cxx b/ucb/source/sorter/sortdynres.cxx index 2f7039b55a0a..fe142c2b53f4 100644 --- a/ucb/source/sorter/sortdynres.cxx +++ b/ucb/source/sorter/sortdynres.cxx @@ -36,15 +36,6 @@ using namespace com::sun::star::uno; using namespace comphelper; -// The mutex to synchronize access to containers. -static osl::Mutex& getContainerMutex() -{ - static osl::Mutex ourMutex; - - return ourMutex; -} - - // SortedDynamicResultSet SortedDynamicResultSet::SortedDynamicResultSet( @@ -53,7 +44,6 @@ SortedDynamicResultSet::SortedDynamicResultSet( const Reference < XAnyCompareFactory > &xCompFac, const Reference < XComponentContext > &rxContext ) { - mpDisposeEventListeners = nullptr; mxOwnListener = new SortedDynamicResultSetListener( this ); mxOriginal = xOriginal; @@ -72,7 +62,10 @@ SortedDynamicResultSet::~SortedDynamicResultSet() mxOwnListener->impl_OwnerDies(); mxOwnListener.clear(); - mpDisposeEventListeners.reset(); + { + std::unique_lock aGuard(maMutex); + maDisposeEventListeners.clear(aGuard); + } mxOne.clear(); mxTwo.clear(); @@ -100,13 +93,13 @@ css::uno::Sequence< OUString > SAL_CALL SortedDynamicResultSet::getSupportedServ void SAL_CALL SortedDynamicResultSet::dispose() { - osl::Guard< osl::Mutex > aGuard( maMutex ); + std::unique_lock aGuard( maMutex ); - if ( mpDisposeEventListeners && mpDisposeEventListeners->getLength() ) + if ( maDisposeEventListeners.getLength(aGuard) ) { EventObject aEvt; aEvt.Source = static_cast< XComponent * >( this ); - mpDisposeEventListeners->disposeAndClear( aEvt ); + maDisposeEventListeners.disposeAndClear( aGuard, aEvt ); } mxOne.clear(); @@ -119,22 +112,17 @@ void SAL_CALL SortedDynamicResultSet::dispose() void SAL_CALL SortedDynamicResultSet::addEventListener( const Reference< XEventListener >& Listener ) { - osl::Guard< osl::Mutex > aGuard( maMutex ); - - if ( !mpDisposeEventListeners ) - mpDisposeEventListeners.reset( - new OInterfaceContainerHelper3<XEventListener>( getContainerMutex() ) ); + std::unique_lock aGuard( maMutex ); - mpDisposeEventListeners->addInterface( Listener ); + maDisposeEventListeners.addInterface( aGuard, Listener ); } void SAL_CALL SortedDynamicResultSet::removeEventListener( const Reference< XEventListener >& Listener ) { - osl::Guard< osl::Mutex > aGuard( maMutex ); + std::unique_lock aGuard( maMutex ); - if ( mpDisposeEventListeners ) - mpDisposeEventListeners->removeInterface( Listener ); + maDisposeEventListeners.removeInterface( aGuard, Listener ); } @@ -143,7 +131,7 @@ void SAL_CALL SortedDynamicResultSet::removeEventListener( Reference< XResultSet > SAL_CALL SortedDynamicResultSet::getStaticResultSet() { - osl::Guard< osl::Mutex > aGuard( maMutex ); + std::unique_lock aGuard( maMutex ); if ( mxListener.is() ) throw ListenerAlreadySetException(); @@ -163,12 +151,12 @@ SortedDynamicResultSet::getStaticResultSet() void SAL_CALL SortedDynamicResultSet::setListener( const Reference< XDynamicResultSetListener >& Listener ) { - osl::Guard< osl::Mutex > aGuard( maMutex ); + std::unique_lock aGuard( maMutex ); if ( mxListener.is() ) throw ListenerAlreadySetException(); - addEventListener( Listener ); + maDisposeEventListeners.addInterface( aGuard, Listener ); mxListener = Listener; @@ -211,7 +199,7 @@ SortedDynamicResultSet::connectToCache( const Reference< XDynamicResultSet > & x sal_Int16 SAL_CALL SortedDynamicResultSet::getCapabilities() { - osl::Guard< osl::Mutex > aGuard( maMutex ); + std::unique_lock aGuard( maMutex ); sal_Int16 nCaps = 0; @@ -244,7 +232,7 @@ sal_Int16 SAL_CALL SortedDynamicResultSet::getCapabilities() */ void SortedDynamicResultSet::impl_notify( const ListEvent& Changes ) { - osl::Guard< osl::Mutex > aGuard( maMutex ); + std::unique_lock aGuard( maMutex ); bool bHasNew = false; bool bHasModified = false; diff --git a/ucb/source/sorter/sortdynres.hxx b/ucb/source/sorter/sortdynres.hxx index 1098f223a6c1..320e4d9ddb8e 100644 --- a/ucb/source/sorter/sortdynres.hxx +++ b/ucb/source/sorter/sortdynres.hxx @@ -24,7 +24,7 @@ #include <com/sun/star/ucb/XDynamicResultSet.hpp> #include <com/sun/star/ucb/XDynamicResultSetListener.hpp> #include <com/sun/star/ucb/XSortedDynamicResultSetFactory.hpp> -#include <comphelper/interfacecontainer3.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <cppuhelper/factory.hxx> #include <cppuhelper/implbase.hxx> #include <memory> @@ -38,7 +38,7 @@ class SortedDynamicResultSet: public cppu::WeakImplHelper < css::lang::XServiceInfo, css::ucb::XDynamicResultSet > { - std::unique_ptr<comphelper::OInterfaceContainerHelper3<css::lang::XEventListener>> mpDisposeEventListeners; + comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> maDisposeEventListeners; css::uno::Reference < css::ucb::XDynamicResultSetListener > mxListener; @@ -52,7 +52,7 @@ class SortedDynamicResultSet: public cppu::WeakImplHelper < rtl::Reference<SortedDynamicResultSetListener> mxOwnListener; EventList maActions; - osl::Mutex maMutex; + std::mutex maMutex; bool mbGotWelcome:1; bool mbUseOne:1; bool mbStatic:1;