summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorXisco Fauli <anistenis@gmail.com>2016-06-15 01:20:36 +0200
committerNoel Grandin <noelgrandin@gmail.com>2016-06-16 06:53:06 +0000
commitdad8d71f4a73b64e534c1977e09e54905b8e27e8 (patch)
tree06b617112f58334b74db4c6679be1a0c7e0e9df2 /svtools
parent94d2b31d984382ba76c623236f6daf678204844a (diff)
tdf#89329: use shared_ptr for pImpl in toolpanelopt
Change-Id: I2035971f6633aed1389ffae5815c7000699b9735 Reviewed-on: https://gerrit.libreoffice.org/26279 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Diffstat (limited to 'svtools')
-rw-r--r--svtools/source/config/toolpanelopt.cxx43
1 files changed, 18 insertions, 25 deletions
diff --git a/svtools/source/config/toolpanelopt.cxx b/svtools/source/config/toolpanelopt.cxx
index bddf81d75c82..5294886095fe 100644
--- a/svtools/source/config/toolpanelopt.cxx
+++ b/svtools/source/config/toolpanelopt.cxx
@@ -297,20 +297,18 @@ Sequence< OUString > SvtToolPanelOptions_Impl::GetPropertyNames()
return Sequence< OUString >( pProperties, SAL_N_ELEMENTS( pProperties ) );
}
-// initialize static member, see definition for further information
-// DON'T DO IT IN YOUR HEADER!
-SvtToolPanelOptions_Impl* SvtToolPanelOptions::m_pDataContainer = nullptr;
-sal_Int32 SvtToolPanelOptions::m_nRefCount = 0;
+std::weak_ptr<SvtToolPanelOptions_Impl> m_pOptions;
SvtToolPanelOptions::SvtToolPanelOptions()
{
// Global access, must be guarded (multithreading!).
MutexGuard aGuard( GetInitMutex() );
- ++m_nRefCount;
- // ... and initialize our data container only if it not already exist!
- if( m_pDataContainer == nullptr )
+
+ m_pImpl = m_pOptions.lock();
+ if( !m_pImpl )
{
- m_pDataContainer = new SvtToolPanelOptions_Impl;
+ m_pImpl = std::make_shared<SvtToolPanelOptions_Impl>();
+ m_pOptions = m_pImpl;
}
}
@@ -318,63 +316,58 @@ SvtToolPanelOptions::~SvtToolPanelOptions()
{
// Global access, must be guarded (multithreading!)
MutexGuard aGuard( GetInitMutex() );
- --m_nRefCount;
- // If last instance was deleted we must destroy our static data container!
- if( m_nRefCount <= 0 )
- {
- delete m_pDataContainer;
- m_pDataContainer = nullptr;
- }
+
+ m_pImpl.reset();
}
bool SvtToolPanelOptions::GetVisibleImpressView() const
{
- return m_pDataContainer->m_bVisibleImpressView;
+ return m_pImpl->m_bVisibleImpressView;
}
void SvtToolPanelOptions::SetVisibleImpressView(bool bVisible)
{
- m_pDataContainer->m_bVisibleImpressView = bVisible;
+ m_pImpl->m_bVisibleImpressView = bVisible;
}
bool SvtToolPanelOptions::GetVisibleOutlineView() const
{
- return m_pDataContainer->m_bVisibleOutlineView;
+ return m_pImpl->m_bVisibleOutlineView;
}
void SvtToolPanelOptions::SetVisibleOutlineView(bool bVisible)
{
- m_pDataContainer->m_bVisibleOutlineView = bVisible;
+ m_pImpl->m_bVisibleOutlineView = bVisible;
}
bool SvtToolPanelOptions::GetVisibleNotesView() const
{
- return m_pDataContainer->m_bVisibleNotesView;
+ return m_pImpl->m_bVisibleNotesView;
}
void SvtToolPanelOptions::SetVisibleNotesView(bool bVisible)
{
- m_pDataContainer->m_bVisibleNotesView = bVisible;
+ m_pImpl->m_bVisibleNotesView = bVisible;
}
bool SvtToolPanelOptions::GetVisibleHandoutView() const
{
- return m_pDataContainer->m_bVisibleHandoutView;
+ return m_pImpl->m_bVisibleHandoutView;
}
void SvtToolPanelOptions::SetVisibleHandoutView(bool bVisible)
{
- m_pDataContainer->m_bVisibleHandoutView = bVisible;
+ m_pImpl->m_bVisibleHandoutView = bVisible;
}
bool SvtToolPanelOptions::GetVisibleSlideSorterView() const
{
- return m_pDataContainer->m_bVisibleSlideSorterView;
+ return m_pImpl->m_bVisibleSlideSorterView;
}
void SvtToolPanelOptions::SetVisibleSlideSorterView(bool bVisible)
{
- m_pDataContainer->m_bVisibleSlideSorterView = bVisible;
+ m_pImpl->m_bVisibleSlideSorterView = bVisible;
}
namespace