summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2017-01-23 13:54:16 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-01-24 07:03:11 +0200
commit8d611dcc31ee851ddd0a3f96f1fe202ee7bb9eb2 (patch)
treebec429d8d05c13194b82d87efb35de448c569334 /chart2
parent12643f416102c868309ba8d082ea91726045f0d1 (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.hxx5
-rw-r--r--chart2/source/model/main/ChartModel.cxx35
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