From 91c5e7a924830dbefeaedd4e342f6f2d69e1b1ea Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Thu, 1 Sep 2022 19:08:37 +0200 Subject: no need to use unique_ptr for this map in chart::CommandDispatch map is already a node based data structure, so the values will stay in the same place in memory Change-Id: I255d99cd2014f33524480e218d2d9cd5ca812375 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139235 Tested-by: Jenkins Reviewed-by: Noel Grandin --- chart2/source/controller/main/CommandDispatch.cxx | 42 +++++++++-------------- chart2/source/controller/main/CommandDispatch.hxx | 2 +- 2 files changed, 18 insertions(+), 26 deletions(-) (limited to 'chart2') diff --git a/chart2/source/controller/main/CommandDispatch.cxx b/chart2/source/controller/main/CommandDispatch.cxx index f06c877ee525..c7e4f622c522 100644 --- a/chart2/source/controller/main/CommandDispatch.cxx +++ b/chart2/source/controller/main/CommandDispatch.cxx @@ -48,13 +48,7 @@ void SAL_CALL CommandDispatch::disposing() { Reference< uno::XInterface > xEventSource(static_cast< cppu::OWeakObject* >( this )); for( auto& rElement : m_aListeners ) - { - if( rElement.second ) - { - rElement.second->disposeAndClear( xEventSource ); - rElement.second.reset(); - } - } + rElement.second.disposeAndClear( xEventSource ); m_aListeners.clear(); } @@ -67,13 +61,14 @@ void SAL_CALL CommandDispatch::addStatusListener( const Reference< frame::XStatu tListenerMap::iterator aIt( m_aListeners.find( URL.Complete )); if( aIt == m_aListeners.end()) { - aIt = m_aListeners.insert( - m_aListeners.begin(), - tListenerMap::value_type( URL.Complete, new ::comphelper::OInterfaceContainerHelper3( m_aMutex ))); + aIt = m_aListeners.emplace( + std::piecewise_construct, + std::forward_as_tuple(URL.Complete), + std::forward_as_tuple( m_aMutex )).first; } - OSL_ASSERT( aIt != m_aListeners.end()); + assert( aIt != m_aListeners.end()); - aIt->second->addInterface( Control ); + aIt->second.addInterface( Control ); fireStatusEvent( URL.Complete, Control ); } @@ -81,7 +76,7 @@ void SAL_CALL CommandDispatch::removeStatusListener( const Reference< frame::XSt { tListenerMap::iterator aIt( m_aListeners.find( URL.Complete )); if( aIt != m_aListeners.end()) - (*aIt).second->removeInterface( Control ); + (*aIt).second.removeInterface( Control ); } // ____ XModifyListener ____ @@ -132,20 +127,17 @@ void CommandDispatch::fireStatusEventForURL( tListenerMap::iterator aIt( m_aListeners.find( aURL.Complete )); if( aIt != m_aListeners.end()) { - if( aIt->second ) - { - ::comphelper::OInterfaceIteratorHelper3 aIntfIt( *((*aIt).second) ); + ::comphelper::OInterfaceIteratorHelper3 aIntfIt( aIt->second ); - while( aIntfIt.hasMoreElements()) + while( aIntfIt.hasMoreElements()) + { + try + { + aIntfIt.next()->statusChanged( aEventToSend ); + } + catch( const uno::Exception & ) { - try - { - aIntfIt.next()->statusChanged( aEventToSend ); - } - catch( const uno::Exception & ) - { - DBG_UNHANDLED_EXCEPTION("chart2"); - } + DBG_UNHANDLED_EXCEPTION("chart2"); } } } diff --git a/chart2/source/controller/main/CommandDispatch.hxx b/chart2/source/controller/main/CommandDispatch.hxx index 16e0b5ab72bc..d156b8d8cf8d 100644 --- a/chart2/source/controller/main/CommandDispatch.hxx +++ b/chart2/source/controller/main/CommandDispatch.hxx @@ -121,7 +121,7 @@ private: css::uno::Reference< css::uno::XComponentContext > m_xContext; css::uno::Reference< css::util::XURLTransformer > m_xURLTransformer; - typedef std::map< OUString, std::unique_ptr<::comphelper::OInterfaceContainerHelper3> > + typedef std::map< OUString, ::comphelper::OInterfaceContainerHelper3 > tListenerMap; tListenerMap m_aListeners; -- cgit