diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-01-23 13:54:16 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-01-24 07:03:11 +0200 |
commit | 8d611dcc31ee851ddd0a3f96f1fe202ee7bb9eb2 (patch) | |
tree | bec429d8d05c13194b82d87efb35de448c569334 /chart2 | |
parent | 12643f416102c868309ba8d082ea91726045f0d1 (diff) |
use rtl::Reference in ChartModel
instead of storing both a raw pointer and an uno::Reference
Change-Id: I86846c2c756255eb5627a4b1e5144c41865db895
Diffstat (limited to 'chart2')
-rw-r--r-- | chart2/inc/ChartModel.hxx | 5 | ||||
-rw-r--r-- | chart2/source/model/main/ChartModel.cxx | 35 |
2 files changed, 18 insertions, 22 deletions
diff --git a/chart2/inc/ChartModel.hxx b/chart2/inc/ChartModel.hxx index 4cbdbfd5defa..0a0889138a40 100644 --- a/chart2/inc/ChartModel.hxx +++ b/chart2/inc/ChartModel.hxx @@ -122,8 +122,7 @@ private: bool mbTimeBased; - css::uno::Reference< css::uno::XInterface > xChartView; // for the ref count - ChartView* mpChartView; + rtl::Reference<ChartView> mxChartView; OUString m_aResource; css::uno::Sequence< css::beans::PropertyValue > m_aMediaDescriptor; @@ -572,7 +571,7 @@ public: css::uno::Reference< css::util::XNumberFormatsSupplier > const & getNumberFormatsSupplier(); - const css::uno::Reference< css::uno::XInterface >& getChartView() { return xChartView;} + css::uno::Reference< css::uno::XInterface > getChartView() const; bool isTimeBased() const { return mbTimeBased;} void setTimeBased(bool bTimeBased); diff --git a/chart2/source/model/main/ChartModel.cxx b/chart2/source/model/main/ChartModel.cxx index 72e61517680d..65717729a221 100644 --- a/chart2/source/model/main/ChartModel.cxx +++ b/chart2/source/model/main/ChartModel.cxx @@ -95,7 +95,6 @@ ChartModel::ChartModel(uno::Reference<uno::XComponentContext > const & xContext) , m_nInLoad(0) , m_bUpdateNotificationsPending(false) , mbTimeBased(false) - , mpChartView(nullptr) , m_pUndoManager( nullptr ) , m_aControllers( m_aModelMutex ) , m_nControllerLockCount(0) @@ -136,7 +135,6 @@ ChartModel::ChartModel( const ChartModel & rOther ) , m_nInLoad(0) , m_bUpdateNotificationsPending(false) , mbTimeBased(rOther.mbTimeBased) - , mpChartView(nullptr) , m_aResource( rOther.m_aResource ) , m_aMediaDescriptor( rOther.m_aMediaDescriptor ) , m_aControllers( m_aModelMutex ) @@ -205,6 +203,11 @@ void SAL_CALL ChartModel::initialize( const Sequence< Any >& /*rArguments*/ ) //support argument "DocumentRecoverySupport"? } +css::uno::Reference< css::uno::XInterface > ChartModel::getChartView() const +{ + return static_cast< ::cppu::OWeakObject* >( mxChartView.get() ); +} + // private methods OUString ChartModel::impl_g_getLocation() @@ -1220,12 +1223,11 @@ Reference< uno::XInterface > SAL_CALL ChartModel::createInstance( const OUString case SERVICE_TRANSP_GRADIENT_TABLE: case SERVICE_MARKER_TABLE: { - if(!mpChartView) + if(!mxChartView.is()) { - mpChartView = new ChartView( m_xContext, *this); - xChartView = static_cast< ::cppu::OWeakObject* >( mpChartView ); + mxChartView = new ChartView( m_xContext, *this); } - return mpChartView->createInstance( rServiceSpecifier ); + return mxChartView->createInstance( rServiceSpecifier ); } break; case SERVICE_NAMESPACE_MAP: @@ -1234,13 +1236,12 @@ Reference< uno::XInterface > SAL_CALL ChartModel::createInstance( const OUString } else if(rServiceSpecifier == CHART_VIEW_SERVICE_NAME) { - if(!mpChartView) + if(!mxChartView.is()) { - mpChartView = new ChartView( m_xContext, *this); - xChartView = static_cast< ::cppu::OWeakObject* >( mpChartView ); + mxChartView = new ChartView( m_xContext, *this); } - return static_cast< ::cppu::OWeakObject* >( mpChartView ); + return static_cast< ::cppu::OWeakObject* >( mxChartView.get() ); } else { @@ -1424,17 +1425,13 @@ void ChartModel::setWindow( const sal_uInt64 nWindowPtr ) void ChartModel::update() throw (uno::RuntimeException, std::exception) { - if(!mpChartView) - { - mpChartView = new ChartView( m_xContext, *this); - xChartView = static_cast< ::cppu::OWeakObject* >( mpChartView ); - } - if(mpChartView) + if(!mxChartView.is()) { - mpChartView->setViewDirty(); - mpChartView->update(); - mpChartView->updateOpenGLWindow(); + mxChartView = new ChartView( m_xContext, *this); } + mxChartView->setViewDirty(); + mxChartView->update(); + mxChartView->updateOpenGLWindow(); } } // namespace chart |