summaryrefslogtreecommitdiff
path: root/svtools/source/config
diff options
context:
space:
mode:
authorXisco Fauli <anistenis@gmail.com>2016-06-15 20:46:16 +0200
committerNoel Grandin <noelgrandin@gmail.com>2016-06-21 13:18:04 +0000
commitbb6500aa74feabcf884801d7ca9ce70b5449cafb (patch)
tree5c95f163c3690dc9e9643ca044726c6c6fad2462 /svtools/source/config
parent9cef658364e4d8441f490e4fe89c3bfa14cd24b3 (diff)
tdf#89329: use shared_ptr for pImpl in slidesorterbaropt
Change-Id: If5b7fd23448a584d1faebaf0a540e61f091471fa Reviewed-on: https://gerrit.libreoffice.org/26331 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Diffstat (limited to 'svtools/source/config')
-rw-r--r--svtools/source/config/slidesorterbaropt.cxx58
1 files changed, 26 insertions, 32 deletions
diff --git a/svtools/source/config/slidesorterbaropt.cxx b/svtools/source/config/slidesorterbaropt.cxx
index 49607c03e724..00028af7eed8 100644
--- a/svtools/source/config/slidesorterbaropt.cxx
+++ b/svtools/source/config/slidesorterbaropt.cxx
@@ -55,7 +55,7 @@ class SvtSlideSorterBarOptions_Impl : public ConfigItem
public:
SvtSlideSorterBarOptions_Impl();
- virtual ~SvtSlideSorterBarOptions_Impl();
+ ~SvtSlideSorterBarOptions_Impl() override;
/** called for notify of configmanager
@@ -83,7 +83,7 @@ class SvtSlideSorterBarOptions_Impl : public ConfigItem
bool m_bVisibleDrawView;
private:
- virtual void ImplCommit() override;
+ virtual void ImplCommit() final override;
/** return list of key names of our configuration management which represent oue module tree
@@ -193,7 +193,8 @@ SvtSlideSorterBarOptions_Impl::SvtSlideSorterBarOptions_Impl()
SvtSlideSorterBarOptions_Impl::~SvtSlideSorterBarOptions_Impl()
{
- assert(!IsModified()); // should have been committed
+ if (IsModified())
+ Commit();
}
static int lcl_MapPropertyName( const OUString& rCompare,
@@ -343,20 +344,20 @@ void SvtSlideSorterBarOptions_Impl::SetVisibleViewImpl( bool& bVisibleView, bool
}
}
-// initialize static member, see definition for further information
-// DON'T DO IT IN YOUR HEADER!
-SvtSlideSorterBarOptions_Impl* SvtSlideSorterBarOptions::m_pDataContainer = nullptr ;
-sal_Int32 SvtSlideSorterBarOptions::m_nRefCount = 0 ;
+namespace {
+ std::weak_ptr<SvtSlideSorterBarOptions_Impl> g_pSlideSorterBarOptions;
+}
SvtSlideSorterBarOptions::SvtSlideSorterBarOptions()
{
// 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 = g_pSlideSorterBarOptions.lock();
+ if( !m_pImpl )
{
- m_pDataContainer = new SvtSlideSorterBarOptions_Impl;
+ m_pImpl = std::make_shared<SvtSlideSorterBarOptions_Impl>();
+ g_pSlideSorterBarOptions = m_pImpl;
}
}
@@ -364,75 +365,68 @@ SvtSlideSorterBarOptions::~SvtSlideSorterBarOptions()
{
// 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 )
- {
- if (m_pDataContainer->IsModified())
- m_pDataContainer->Commit();
- delete m_pDataContainer;
- m_pDataContainer = nullptr;
- }
+
+ m_pImpl.reset();
}
bool SvtSlideSorterBarOptions::GetVisibleImpressView() const
{
- return m_pDataContainer->m_bVisibleImpressView && !comphelper::LibreOfficeKit::isActive();
+ return m_pImpl->m_bVisibleImpressView && !comphelper::LibreOfficeKit::isActive();
}
void SvtSlideSorterBarOptions::SetVisibleImpressView(bool bVisible)
{
- m_pDataContainer->SetVisibleImpressView( bVisible );
+ m_pImpl->SetVisibleImpressView( bVisible );
}
bool SvtSlideSorterBarOptions::GetVisibleOutlineView() const
{
- return m_pDataContainer->m_bVisibleOutlineView;
+ return m_pImpl->m_bVisibleOutlineView;
}
void SvtSlideSorterBarOptions::SetVisibleOutlineView(bool bVisible)
{
- m_pDataContainer->SetVisibleOutlineView( bVisible );
+ m_pImpl->SetVisibleOutlineView( bVisible );
}
bool SvtSlideSorterBarOptions::GetVisibleNotesView() const
{
- return m_pDataContainer->m_bVisibleNotesView;
+ return m_pImpl->m_bVisibleNotesView;
}
void SvtSlideSorterBarOptions::SetVisibleNotesView(bool bVisible)
{
- m_pDataContainer->SetVisibleNotesView( bVisible );
+ m_pImpl->SetVisibleNotesView( bVisible );
}
bool SvtSlideSorterBarOptions::GetVisibleHandoutView() const
{
- return m_pDataContainer->m_bVisibleHandoutView;
+ return m_pImpl->m_bVisibleHandoutView;
}
void SvtSlideSorterBarOptions::SetVisibleHandoutView(bool bVisible)
{
- m_pDataContainer->SetVisibleHandoutView( bVisible );
+ m_pImpl->SetVisibleHandoutView( bVisible );
}
bool SvtSlideSorterBarOptions::GetVisibleSlideSorterView() const
{
- return m_pDataContainer->m_bVisibleSlideSorterView && !comphelper::LibreOfficeKit::isActive();
+ return m_pImpl->m_bVisibleSlideSorterView && !comphelper::LibreOfficeKit::isActive();
}
void SvtSlideSorterBarOptions::SetVisibleSlideSorterView(bool bVisible)
{
- m_pDataContainer->SetVisibleSlideSorterView( bVisible );
+ m_pImpl->SetVisibleSlideSorterView( bVisible );
}
bool SvtSlideSorterBarOptions::GetVisibleDrawView() const
{
- return m_pDataContainer->m_bVisibleDrawView;
+ return m_pImpl->m_bVisibleDrawView;
}
void SvtSlideSorterBarOptions::SetVisibleDrawView(bool bVisible)
{
- m_pDataContainer->SetVisibleDrawView( bVisible );
+ m_pImpl->SetVisibleDrawView( bVisible );
}
namespace