framework/inc/uielement/statusbarmanager.hxx | 7 ++++--- framework/source/uielement/statusbarmanager.cxx | 15 +++++++++------ 2 files changed, 13 insertions(+), 9 deletions(-)
New commits: commit e35d97c96139b836d71abd486644f2d576288e8c Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Sat May 7 14:12:03 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sat May 7 20:55:33 2022 +0200 osl::Mutex->std::mutex in framework::StatusBarManager Change-Id: I34cdb5ce7e9e5b3c3d8f985057bb7ff09f2b7f68 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133978 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/framework/inc/uielement/statusbarmanager.hxx b/framework/inc/uielement/statusbarmanager.hxx index 99cf94ea1d59..ba2dbd9a31c0 100644 --- a/framework/inc/uielement/statusbarmanager.hxx +++ b/framework/inc/uielement/statusbarmanager.hxx @@ -26,10 +26,11 @@ #include <com/sun/star/uno/XComponentContext.hpp> #include <cppuhelper/implbase.hxx> -#include <comphelper/multicontainer2.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <vcl/status.hxx> #include <vcl/vclptr.hxx> #include <map> +#include <mutex> namespace framework { @@ -92,8 +93,8 @@ class StatusBarManager final: public ::cppu::WeakImplHelper< VclPtr<StatusBar> m_pStatusBar; css::uno::Reference< css::frame::XFrame > m_xFrame; StatusBarControllerMap m_aControllerMap; - osl::Mutex m_mutex; - comphelper::OMultiTypeInterfaceContainerHelper2 m_aListenerContainer; /// container for ALL Listener + std::mutex m_mutex; + comphelper::OInterfaceContainerHelper4<XEventListener> m_aListenerContainer; css::uno::Reference< css::uno::XComponentContext > m_xContext; css::uno::Reference< css::frame::XUIControllerFactory > m_xStatusbarControllerFactory; }; diff --git a/framework/source/uielement/statusbarmanager.cxx b/framework/source/uielement/statusbarmanager.cxx index 929afb24ca94..b54f57ff098f 100644 --- a/framework/source/uielement/statusbarmanager.cxx +++ b/framework/source/uielement/statusbarmanager.cxx @@ -128,7 +128,6 @@ StatusBarManager::StatusBarManager( m_bUpdateControllers( false ), m_pStatusBar( pStatusBar ), m_xFrame( rFrame ), - m_aListenerContainer( m_mutex ), m_xContext( rxContext ) { @@ -177,9 +176,11 @@ void SAL_CALL StatusBarManager::dispose() { uno::Reference< lang::XComponent > xThis(this ); - lang::EventObject aEvent( xThis ); - m_aListenerContainer.disposeAndClear( aEvent ); - + { + lang::EventObject aEvent( xThis ); + std::unique_lock aGuard(m_mutex); + m_aListenerContainer.disposeAndClear( aGuard, aEvent ); + } { SolarMutexGuard g; if ( m_bDisposed ) @@ -223,12 +224,14 @@ void SAL_CALL StatusBarManager::addEventListener( const uno::Reference< lang::XE if ( m_bDisposed ) throw lang::DisposedException(); - m_aListenerContainer.addInterface( cppu::UnoType<lang::XEventListener>::get(), xListener ); + std::unique_lock aGuard(m_mutex); + m_aListenerContainer.addInterface( aGuard, xListener ); } void SAL_CALL StatusBarManager::removeEventListener( const uno::Reference< lang::XEventListener >& xListener ) { - m_aListenerContainer.removeInterface( cppu::UnoType<lang::XEventListener>::get(), xListener ); + std::unique_lock aGuard(m_mutex); + m_aListenerContainer.removeInterface( aGuard, xListener ); } // XUIConfigurationListener