diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-02-21 12:53:16 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2023-02-22 10:06:40 +0000 |
commit | 24b3e4a5ba91d604ab68f49347ab065edaf48218 (patch) | |
tree | 72738370cba122a19c6bcd9bcc324738cdf43c07 | |
parent | e7be3b821cd42fdc9d8e51772b8202030d76497e (diff) |
BaseMutex->std::mutex in ChartDataWrapper
Change-Id: Ieee3fc918a5a3acdb19a1d95c475d225e6d90355
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147401
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r-- | chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx | 30 | ||||
-rw-r--r-- | chart2/source/controller/chartapiwrapper/ChartDataWrapper.hxx | 9 |
2 files changed, 24 insertions, 15 deletions
diff --git a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx index 0cde76dcf22c..c624f9074687 100644 --- a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx @@ -366,7 +366,6 @@ struct lcl_DateCategoriesOperator : public lcl_Operator ChartDataWrapper::ChartDataWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) : m_spChart2ModelContact(std::move(spChart2ModelContact)) - , m_aEventListenerContainer(m_aMutex) { osl_atomic_increment( &m_refCount ); initDataAccess(); @@ -375,8 +374,7 @@ ChartDataWrapper::ChartDataWrapper(std::shared_ptr<Chart2ModelContact> spChart2M ChartDataWrapper::ChartDataWrapper( std::shared_ptr<Chart2ModelContact> spChart2ModelContact, const Reference< XChartData >& xNewData ) : - m_spChart2ModelContact(std::move( spChart2ModelContact )), - m_aEventListenerContainer( m_aMutex ) + m_spChart2ModelContact(std::move( spChart2ModelContact )) { osl_atomic_increment( &m_refCount ); lcl_AllOperator aOperator( xNewData ); @@ -513,13 +511,15 @@ void SAL_CALL ChartDataWrapper::setDateCategories( const Sequence< double >& rDa void SAL_CALL ChartDataWrapper::addChartDataChangeEventListener( const uno::Reference< css::chart::XChartDataChangeEventListener >& aListener ) { - m_aEventListenerContainer.addInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, aListener ); } void SAL_CALL ChartDataWrapper::removeChartDataChangeEventListener( const uno::Reference< css::chart::XChartDataChangeEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } double SAL_CALL ChartDataWrapper::getNotANumber() @@ -537,20 +537,23 @@ sal_Bool SAL_CALL ChartDataWrapper::isNotANumber( double nNumber ) // ____ XComponent ____ void SAL_CALL ChartDataWrapper::dispose() { - m_aEventListenerContainer.disposeAndClear( lang::EventObject( static_cast< ::cppu::OWeakObject* >( this ))); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( static_cast< ::cppu::OWeakObject* >( this ))); m_xDataAccess=nullptr; } void SAL_CALL ChartDataWrapper::addEventListener( const uno::Reference< lang::XEventListener > & xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL ChartDataWrapper::removeEventListener( const uno::Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } // ____ XEventListener ____ @@ -560,7 +563,8 @@ void SAL_CALL ChartDataWrapper::disposing( const lang::EventObject& /* Source */ void ChartDataWrapper::fireChartDataChangeEvent( css::chart::ChartDataChangeEvent& aEvent ) { - if( ! m_aEventListenerContainer.getLength() ) + std::unique_lock g(m_aMutex); + if( ! m_aEventListenerContainer.getLength(g) ) return; uno::Reference< uno::XInterface > xSrc( static_cast< cppu::OWeakObject* >( this )); @@ -568,7 +572,13 @@ void ChartDataWrapper::fireChartDataChangeEvent( css::chart::ChartDataChangeEven if( xSrc.is() ) aEvent.Source = xSrc; - m_aEventListenerContainer.notifyEach( &css::chart::XChartDataChangeEventListener::chartDataChanged, aEvent ); + m_aEventListenerContainer.forEach( g, + [&aEvent](const uno::Reference<css::lang::XEventListener>& l) + { + uno::Reference<css::chart::XChartDataChangeEventListener> cl(l, uno::UNO_QUERY); + if (cl) + cl->chartDataChanged(aEvent); + }); } void ChartDataWrapper::switchToInternalDataProvider() diff --git a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.hxx b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.hxx index 854602a23965..3c6602d4e028 100644 --- a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.hxx @@ -18,9 +18,8 @@ */ #pragma once -#include <cppuhelper/basemutex.hxx> #include <cppuhelper/implbase.hxx> -#include <comphelper/interfacecontainer2.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <com/sun/star/chart2/XAnyDescriptionAccess.hpp> #include <com/sun/star/chart/XDateCategories.hpp> #include <com/sun/star/lang/XComponent.hpp> @@ -35,7 +34,7 @@ namespace chart::wrapper class Chart2ModelContact; struct lcl_Operator; -class ChartDataWrapper final : public cppu::BaseMutex, public +class ChartDataWrapper final : public ::cppu::WeakImplHelper< css::chart2::XAnyDescriptionAccess, css::chart::XDateCategories, @@ -107,10 +106,10 @@ private: void initDataAccess(); void applyData( lcl_Operator& rDataOperator ); + std::mutex m_aMutex; css::uno::Reference< css::chart2::XAnyDescriptionAccess > m_xDataAccess; - std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper2 m_aEventListenerContainer; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; }; } // namespace chart::wrapper |