diff options
author | Xisco Fauli <anistenis@gmail.com> | 2016-06-15 01:57:25 +0200 |
---|---|---|
committer | Noel Grandin <noelgrandin@gmail.com> | 2016-06-21 08:04:09 +0000 |
commit | 5ee7d509e7c6d78e758286efb6145385a310cfa5 (patch) | |
tree | 75eec7c9445b5804a50d6bfeecc5348a28848016 /svtools | |
parent | 8a6bffd2fefcc81dc34951ba2e178d9938b59fb3 (diff) |
tdf#89329: use shared_ptr for pImpl in optionsdrawinglayer
Change-Id: Ic9da196c1dfe138ff6408a37fa8ff70492d00bc2
Reviewed-on: https://gerrit.libreoffice.org/26282
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/source/config/optionsdrawinglayer.cxx | 155 |
1 files changed, 44 insertions, 111 deletions
diff --git a/svtools/source/config/optionsdrawinglayer.cxx b/svtools/source/config/optionsdrawinglayer.cxx index ce7eaa81693a..fbf76eadf13a 100644 --- a/svtools/source/config/optionsdrawinglayer.cxx +++ b/svtools/source/config/optionsdrawinglayer.cxx @@ -28,10 +28,8 @@ #include <vcl/settings.hxx> #include <rtl/instance.hxx> - // namespaces - using namespace ::utl ; using namespace ::osl ; using namespace ::com::sun::star::uno ; @@ -157,23 +155,11 @@ using namespace ::com::sun::star::uno ; class SvtOptionsDrawinglayer_Impl : public ConfigItem { public: - - -// constructor / destructor - - - SvtOptionsDrawinglayer_Impl(); - virtual ~SvtOptionsDrawinglayer_Impl(); - - -// override methods of baseclass + SvtOptionsDrawinglayer_Impl(); + ~SvtOptionsDrawinglayer_Impl(); virtual void Notify( const css::uno::Sequence<OUString>& aPropertyNames) override; - -// public interface - - bool IsOverlayBuffer() const { return m_bOverlayBuffer;} bool IsPaintBuffer() const { return m_bPaintBuffer;} const Color& GetStripeColorA() const { return m_bStripeColorA;} @@ -220,8 +206,7 @@ public: // private methods private: - - virtual void ImplCommit() override; + virtual void ImplCommit() SAL_FINAL override; static Sequence< OUString > impl_GetPropertyNames(); @@ -272,9 +257,6 @@ private: bool m_bAllowAAChecked : 1; }; - -// constructor - SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl() : ConfigItem( ROOTNODE_START ), m_bOverlayBuffer( DEFAULT_OVERLAYBUFFER ), @@ -535,15 +517,12 @@ SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl() : } } - -// destructor - SvtOptionsDrawinglayer_Impl::~SvtOptionsDrawinglayer_Impl() { - assert(!IsModified()); // should have been committed + if (IsModified()) + Commit(); } - // Commit void SvtOptionsDrawinglayer_Impl::ImplCommit() @@ -676,32 +655,12 @@ void SvtOptionsDrawinglayer_Impl::ImplCommit() void SvtOptionsDrawinglayer_Impl::Notify( const css::uno::Sequence<OUString>& ) { } - - -// public method - - -// public method - - -// public method - - -// public method - - -// public method - - // #i73602# - // #i74769#, #i75172# - // #i4219# - // helper bool SvtOptionsDrawinglayer_Impl::IsAAPossibleOnThisSystem() const { @@ -729,7 +688,6 @@ bool SvtOptionsDrawinglayer_Impl::IsAAPossibleOnThisSystem() const // primitives - void SvtOptionsDrawinglayer_Impl::SetAntiAliasing( bool bState ) { if(m_bAntiAliasing != bState) @@ -791,236 +749,212 @@ Sequence< OUString > SvtOptionsDrawinglayer_Impl::impl_GetPropertyNames() return seqPropertyNames; } - -// initialize static member -// DON'T DO IT IN YOUR HEADER! -// see definition for further information - -SvtOptionsDrawinglayer_Impl* SvtOptionsDrawinglayer::m_pDataContainer = nullptr; -sal_Int32 SvtOptionsDrawinglayer::m_nRefCount = 0; - - -// constructor +namespace { + //global + std::weak_ptr<SvtOptionsDrawinglayer_Impl> g_pOptionsDrawinglayer; +} SvtOptionsDrawinglayer::SvtOptionsDrawinglayer() { // Global access, must be guarded (multithreading!). MutexGuard aGuard( GetOwnStaticMutex() ); - // Increase our refcount ... - ++m_nRefCount; - // ... and initialize our data container only if it not already! - if( m_pDataContainer == nullptr ) + m_pImpl = g_pOptionsDrawinglayer.lock(); + if( !m_pImpl ) { - m_pDataContainer = new SvtOptionsDrawinglayer_Impl(); + m_pImpl = std::make_shared<SvtOptionsDrawinglayer_Impl>(); + g_pOptionsDrawinglayer = m_pImpl; } } - -// destructor - SvtOptionsDrawinglayer::~SvtOptionsDrawinglayer() { // Global access, must be guarded (multithreading!) MutexGuard aGuard( GetOwnStaticMutex() ); - // Decrease our refcount. - --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(); +} // public method bool SvtOptionsDrawinglayer::IsOverlayBuffer() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsOverlayBuffer(); + return m_pImpl->IsOverlayBuffer(); } - // public method bool SvtOptionsDrawinglayer::IsPaintBuffer() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsPaintBuffer(); + return m_pImpl->IsPaintBuffer(); } - // public method Color SvtOptionsDrawinglayer::GetStripeColorA() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetStripeColorA(); + return m_pImpl->GetStripeColorA(); } - // public method Color SvtOptionsDrawinglayer::GetStripeColorB() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetStripeColorB(); + return m_pImpl->GetStripeColorB(); } - // public method sal_uInt16 SvtOptionsDrawinglayer::GetStripeLength() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetStripeLength(); + return m_pImpl->GetStripeLength(); } // #i73602# bool SvtOptionsDrawinglayer::IsOverlayBuffer_Calc() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsOverlayBuffer_Calc(); + return m_pImpl->IsOverlayBuffer_Calc(); } bool SvtOptionsDrawinglayer::IsOverlayBuffer_Writer() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsOverlayBuffer_Writer(); + return m_pImpl->IsOverlayBuffer_Writer(); } bool SvtOptionsDrawinglayer::IsOverlayBuffer_DrawImpress() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsOverlayBuffer_DrawImpress(); + return m_pImpl->IsOverlayBuffer_DrawImpress(); } // #i74769#, #i75172# bool SvtOptionsDrawinglayer::IsPaintBuffer_Calc() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsPaintBuffer_Calc(); + return m_pImpl->IsPaintBuffer_Calc(); } bool SvtOptionsDrawinglayer::IsPaintBuffer_Writer() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsPaintBuffer_Writer(); + return m_pImpl->IsPaintBuffer_Writer(); } bool SvtOptionsDrawinglayer::IsPaintBuffer_DrawImpress() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsPaintBuffer_DrawImpress(); + return m_pImpl->IsPaintBuffer_DrawImpress(); } // #i4219# sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperWidth() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetMaximumPaperWidth(); + return m_pImpl->GetMaximumPaperWidth(); } sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperHeight() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetMaximumPaperHeight(); + return m_pImpl->GetMaximumPaperHeight(); } sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperLeftMargin() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetMaximumPaperLeftMargin(); + return m_pImpl->GetMaximumPaperLeftMargin(); } sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperRightMargin() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetMaximumPaperRightMargin(); + return m_pImpl->GetMaximumPaperRightMargin(); } sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperTopMargin() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetMaximumPaperTopMargin(); + return m_pImpl->GetMaximumPaperTopMargin(); } sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperBottomMargin() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetMaximumPaperBottomMargin(); + return m_pImpl->GetMaximumPaperBottomMargin(); } // helper bool SvtOptionsDrawinglayer::IsAAPossibleOnThisSystem() const { - return m_pDataContainer->IsAAPossibleOnThisSystem(); + return m_pImpl->IsAAPossibleOnThisSystem(); } // primitives bool SvtOptionsDrawinglayer::IsAntiAliasing() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsAntiAliasing() && IsAAPossibleOnThisSystem(); + return m_pImpl->IsAntiAliasing() && IsAAPossibleOnThisSystem(); } bool SvtOptionsDrawinglayer::IsSnapHorVerLinesToDiscrete() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsAntiAliasing() && m_pDataContainer->IsSnapHorVerLinesToDiscrete(); + return m_pImpl->IsAntiAliasing() && m_pImpl->IsSnapHorVerLinesToDiscrete(); } bool SvtOptionsDrawinglayer::IsSolidDragCreate() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsSolidDragCreate(); + return m_pImpl->IsSolidDragCreate(); } bool SvtOptionsDrawinglayer::IsRenderDecoratedTextDirect() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsRenderDecoratedTextDirect(); + return m_pImpl->IsRenderDecoratedTextDirect(); } bool SvtOptionsDrawinglayer::IsRenderSimpleTextDirect() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsRenderSimpleTextDirect(); + return m_pImpl->IsRenderSimpleTextDirect(); } sal_uInt32 SvtOptionsDrawinglayer::GetQuadratic3DRenderLimit() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetQuadratic3DRenderLimit(); + return m_pImpl->GetQuadratic3DRenderLimit(); } sal_uInt32 SvtOptionsDrawinglayer::GetQuadraticFormControlRenderLimit() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->GetQuadraticFormControlRenderLimit(); + return m_pImpl->GetQuadraticFormControlRenderLimit(); } void SvtOptionsDrawinglayer::SetAntiAliasing( bool bState ) { MutexGuard aGuard( GetOwnStaticMutex() ); - m_pDataContainer->SetAntiAliasing( bState ); + m_pImpl->SetAntiAliasing( bState ); } // #i97672# selection settings bool SvtOptionsDrawinglayer::IsTransparentSelection() const { MutexGuard aGuard( GetOwnStaticMutex() ); - return m_pDataContainer->IsTransparentSelection(); + return m_pImpl->IsTransparentSelection(); } sal_uInt16 SvtOptionsDrawinglayer::GetTransparentSelectionPercent() const { MutexGuard aGuard( GetOwnStaticMutex() ); - sal_uInt16 aRetval(m_pDataContainer->GetTransparentSelectionPercent()); + sal_uInt16 aRetval(m_pImpl->GetTransparentSelectionPercent()); // crop to range [10% .. 90%] if(aRetval < 10) @@ -1039,7 +973,7 @@ sal_uInt16 SvtOptionsDrawinglayer::GetTransparentSelectionPercent() const sal_uInt16 SvtOptionsDrawinglayer::GetSelectionMaximumLuminancePercent() const { MutexGuard aGuard( GetOwnStaticMutex() ); - sal_uInt16 aRetval(m_pDataContainer->GetSelectionMaximumLuminancePercent()); + sal_uInt16 aRetval(m_pImpl->GetSelectionMaximumLuminancePercent()); // crop to range [0% .. 100%] if(aRetval > 90) @@ -1076,7 +1010,6 @@ namespace class theOptionsDrawinglayerMutex : public rtl::Static<osl::Mutex, theOptionsDrawinglayerMutex>{}; } - // private method Mutex& SvtOptionsDrawinglayer::GetOwnStaticMutex() |