include/svtools/statusbarcontroller.hxx | 7 +++---- reportdesign/source/ui/misc/statusbarcontroller.cxx | 2 -- svtools/source/uno/statusbarcontroller.cxx | 17 ++++++++++------- 3 files changed, 13 insertions(+), 13 deletions(-)
New commits: commit b6fdbbc1622a929e2699a67496a38431652eebdf Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Wed Mar 27 16:08:15 2024 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Fri Mar 29 16:24:29 2024 +0100 use std::mutex in StatusbarController remove some locking in reportdesign::OStatusbarController - those places are already locking using the solar mutex Change-Id: I76d8e3a7ad60e4a2be1f0aac42967553356e9202 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165548 Tested-by: Noel Grandin <noel.gran...@collabora.co.uk> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/include/svtools/statusbarcontroller.hxx b/include/svtools/statusbarcontroller.hxx index d5b9f9d2e926..d18cfde1b31c 100644 --- a/include/svtools/statusbarcontroller.hxx +++ b/include/svtools/statusbarcontroller.hxx @@ -22,8 +22,7 @@ #include <svtools/svtdllapi.h> #include <com/sun/star/frame/XStatusbarController.hpp> #include <cppuhelper/weak.hxx> -#include <comphelper/multicontainer2.hxx> -#include <cppuhelper/basemutex.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <tools/gen.hxx> #include <unordered_map> #include <utility> @@ -41,7 +40,6 @@ namespace svt class SVT_DLLPUBLIC StatusbarController : public css::frame::XStatusbarController, - public ::cppu::BaseMutex, public ::cppu::OWeakObject { public: @@ -123,9 +121,10 @@ class SVT_DLLPUBLIC StatusbarController : css::uno::Reference< css::uno::XComponentContext > m_xContext; OUString m_aCommandURL; URLToDispatchMap m_aListenerMap; - comphelper::OMultiTypeInterfaceContainerHelper2 m_aListenerContainer; /// container for ALL Listener + comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListeners; mutable css::uno::Reference< css::util::XURLTransformer > m_xURLTransformer; css::uno::Reference< css::ui::XStatusbarItem > m_xStatusbarItem; + std::mutex m_aMutex; // for m_aEventListeners }; } diff --git a/reportdesign/source/ui/misc/statusbarcontroller.cxx b/reportdesign/source/ui/misc/statusbarcontroller.cxx index 22f2d771412e..98310881a099 100644 --- a/reportdesign/source/ui/misc/statusbarcontroller.cxx +++ b/reportdesign/source/ui/misc/statusbarcontroller.cxx @@ -71,7 +71,6 @@ void SAL_CALL OStatusbarController::initialize( const Sequence< Any >& _rArgumen { StatusbarController::initialize(_rArguments); SolarMutexGuard aSolarMutexGuard; - ::osl::MutexGuard aGuard(m_aMutex); VclPtr< StatusBar > pStatusBar = static_cast<StatusBar*>(VCLUnoHelper::GetWindow(m_xParentWindow)); if ( !pStatusBar ) @@ -117,7 +116,6 @@ void SAL_CALL OStatusbarController::initialize( const Sequence< Any >& _rArgumen void SAL_CALL OStatusbarController::statusChanged( const FeatureStateEvent& _aEvent) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard(m_aMutex); if ( !m_rController.is() ) return; diff --git a/svtools/source/uno/statusbarcontroller.cxx b/svtools/source/uno/statusbarcontroller.cxx index 3bf6de2cf103..59607875ffc6 100644 --- a/svtools/source/uno/statusbarcontroller.cxx +++ b/svtools/source/uno/statusbarcontroller.cxx @@ -56,7 +56,6 @@ StatusbarController::StatusbarController( , m_xFrame( xFrame ) , m_xContext( rxContext ) , m_aCommandURL(std::move( aCommandURL )) - , m_aListenerContainer( m_aMutex ) { } @@ -65,7 +64,6 @@ StatusbarController::StatusbarController() : , m_bInitialized( false ) , m_bDisposed( false ) , m_nID( 0 ) - , m_aListenerContainer( m_aMutex ) { } @@ -182,8 +180,11 @@ void SAL_CALL StatusbarController::dispose() return; } - css::lang::EventObject aEvent( xThis ); - m_aListenerContainer.disposeAndClear( aEvent ); + { + std::unique_lock aGuard(m_aMutex); + css::lang::EventObject aEvent( xThis ); + m_aEventListeners.disposeAndClear( aGuard, aEvent ); + } SolarMutexGuard aSolarMutexGuard; Reference< XStatusListener > xStatusListener = this; @@ -220,12 +221,14 @@ void SAL_CALL StatusbarController::dispose() void SAL_CALL StatusbarController::addEventListener( const Reference< XEventListener >& xListener ) { - m_aListenerContainer.addInterface( cppu::UnoType<XEventListener>::get(), xListener ); + std::unique_lock aGuard(m_aMutex); + m_aEventListeners.addInterface( aGuard, xListener ); } -void SAL_CALL StatusbarController::removeEventListener( const Reference< XEventListener >& aListener ) +void SAL_CALL StatusbarController::removeEventListener( const Reference< XEventListener >& xListener ) { - m_aListenerContainer.removeInterface( cppu::UnoType<XEventListener>::get(), aListener ); + std::unique_lock aGuard(m_aMutex); + m_aEventListeners.removeInterface( aGuard, xListener ); } // XEventListener