[Libreoffice-commits] core.git: include/unotools unotools/source
Julien Nabet
serval2412 at yahoo.fr
Sat Nov 12 06:39:00 UTC 2016
include/unotools/syslocaleoptions.hxx | 3 -
unotools/source/config/syslocaleoptions.cxx | 54 ++++++++++++----------------
2 files changed, 26 insertions(+), 31 deletions(-)
New commits:
commit 73679ee0a31e3f70ace5136a8e41cbeb1f00c238
Author: Julien Nabet <serval2412 at yahoo.fr>
Date: Fri Nov 11 23:38:17 2016 +0100
Copycat SvtSysLocale_Impl for SvtSysLocaleOptions_Impl
and so avoid warn:unotools.config:6728:1:unotools/source/config/configmgr.cxx:167:
ConfigManager not empty when exiting LO
See http://nabble.documentfoundation.org/OSL-ASSERT-items-empty-because-of-Setup-L10N-td4199284.html
Thank you Eike for the hint!
Change-Id: I4b374a075ad8f1ef10a71f3a9424986154613aef
Reviewed-on: https://gerrit.libreoffice.org/30787
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/include/unotools/syslocaleoptions.hxx b/include/unotools/syslocaleoptions.hxx
index d9e0828..f5cb835 100644
--- a/include/unotools/syslocaleoptions.hxx
+++ b/include/unotools/syslocaleoptions.hxx
@@ -43,8 +43,7 @@ namespace osl { class Mutex; }
class SAL_WARN_UNUSED UNOTOOLS_DLLPUBLIC SvtSysLocaleOptions : public utl::detail::Options
{
- static SvtSysLocaleOptions_Impl* pOptions;
- static sal_Int32 nRefCount;
+ std::shared_ptr<SvtSysLocaleOptions_Impl> pImpl;
UNOTOOLS_DLLPRIVATE static ::osl::Mutex& GetMutex();
virtual void ConfigurationChanged( utl::ConfigurationBroadcaster* p, sal_uInt32 nHint ) override;
diff --git a/unotools/source/config/syslocaleoptions.cxx b/unotools/source/config/syslocaleoptions.cxx
index b3d7647..9b24977 100644
--- a/unotools/source/config/syslocaleoptions.cxx
+++ b/unotools/source/config/syslocaleoptions.cxx
@@ -38,10 +38,9 @@ using namespace utl;
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
-SvtSysLocaleOptions_Impl* SvtSysLocaleOptions::pOptions = nullptr;
-sal_Int32 SvtSysLocaleOptions::nRefCount = 0;
namespace
{
+ std::weak_ptr<SvtSysLocaleOptions_Impl> g_pSysLocaleOptions;
struct CurrencyChangeLink
: public rtl::Static<Link<LinkParamNone*,void>, CurrencyChangeLink> {};
}
@@ -513,25 +512,22 @@ void SvtSysLocaleOptions_Impl::Notify( const Sequence< OUString >& seqPropertyNa
SvtSysLocaleOptions::SvtSysLocaleOptions()
{
MutexGuard aGuard( GetMutex() );
- if ( !pOptions )
+ pImpl = g_pSysLocaleOptions.lock();
+ if ( !pImpl )
{
- pOptions = new SvtSysLocaleOptions_Impl;
+ pImpl = std::make_shared<SvtSysLocaleOptions_Impl>();
+ g_pSysLocaleOptions = pImpl;
if (!utl::ConfigManager::IsAvoidConfig())
ItemHolder1::holdConfigItem(E_SYSLOCALEOPTIONS);
}
- ++nRefCount;
- pOptions->AddListener(this);
+ pImpl->AddListener(this);
}
SvtSysLocaleOptions::~SvtSysLocaleOptions()
{
MutexGuard aGuard( GetMutex() );
- pOptions->RemoveListener(this);
- if ( !--nRefCount )
- {
- delete pOptions;
- pOptions = nullptr;
- }
+ pImpl->RemoveListener(this);
+ pImpl.reset();
}
// static
@@ -555,91 +551,91 @@ Mutex& SvtSysLocaleOptions::GetMutex()
bool SvtSysLocaleOptions::IsModified()
{
MutexGuard aGuard( GetMutex() );
- return pOptions->IsModified();
+ return pImpl->IsModified();
}
void SvtSysLocaleOptions::Commit()
{
MutexGuard aGuard( GetMutex() );
- pOptions->Commit();
+ pImpl->Commit();
}
void SvtSysLocaleOptions::BlockBroadcasts( bool bBlock )
{
MutexGuard aGuard( GetMutex() );
- pOptions->BlockBroadcasts( bBlock );
+ pImpl->BlockBroadcasts( bBlock );
}
const OUString& SvtSysLocaleOptions::GetLocaleConfigString() const
{
MutexGuard aGuard( GetMutex() );
- return pOptions->GetLocaleString();
+ return pImpl->GetLocaleString();
}
void SvtSysLocaleOptions::SetLocaleConfigString( const OUString& rStr )
{
MutexGuard aGuard( GetMutex() );
- pOptions->SetLocaleString( rStr );
+ pImpl->SetLocaleString( rStr );
}
void SvtSysLocaleOptions::SetUILocaleConfigString( const OUString& rStr )
{
MutexGuard aGuard( GetMutex() );
- pOptions->SetUILocaleString( rStr );
+ pImpl->SetUILocaleString( rStr );
}
const OUString& SvtSysLocaleOptions::GetCurrencyConfigString() const
{
MutexGuard aGuard( GetMutex() );
- return pOptions->GetCurrencyString();
+ return pImpl->GetCurrencyString();
}
void SvtSysLocaleOptions::SetCurrencyConfigString( const OUString& rStr )
{
MutexGuard aGuard( GetMutex() );
- pOptions->SetCurrencyString( rStr );
+ pImpl->SetCurrencyString( rStr );
}
const OUString& SvtSysLocaleOptions::GetDatePatternsConfigString() const
{
MutexGuard aGuard( GetMutex() );
- return pOptions->GetDatePatternsString();
+ return pImpl->GetDatePatternsString();
}
void SvtSysLocaleOptions::SetDatePatternsConfigString( const OUString& rStr )
{
MutexGuard aGuard( GetMutex() );
- pOptions->SetDatePatternsString( rStr );
+ pImpl->SetDatePatternsString( rStr );
}
bool SvtSysLocaleOptions::IsDecimalSeparatorAsLocale() const
{
MutexGuard aGuard( GetMutex() );
- return pOptions->IsDecimalSeparatorAsLocale();
+ return pImpl->IsDecimalSeparatorAsLocale();
}
void SvtSysLocaleOptions::SetDecimalSeparatorAsLocale( bool bSet)
{
MutexGuard aGuard( GetMutex() );
- pOptions->SetDecimalSeparatorAsLocale(bSet);
+ pImpl->SetDecimalSeparatorAsLocale(bSet);
}
bool SvtSysLocaleOptions::IsIgnoreLanguageChange() const
{
MutexGuard aGuard( GetMutex() );
- return pOptions->IsIgnoreLanguageChange();
+ return pImpl->IsIgnoreLanguageChange();
}
void SvtSysLocaleOptions::SetIgnoreLanguageChange( bool bSet)
{
MutexGuard aGuard( GetMutex() );
- pOptions->SetIgnoreLanguageChange(bSet);
+ pImpl->SetIgnoreLanguageChange(bSet);
}
bool SvtSysLocaleOptions::IsReadOnly( EOption eOption ) const
{
MutexGuard aGuard( GetMutex() );
- return pOptions->IsReadOnly( eOption );
+ return pImpl->IsReadOnly( eOption );
}
// static
@@ -711,12 +707,12 @@ LanguageTag SvtSysLocaleOptions::GetLanguageTag() const
const LanguageTag & SvtSysLocaleOptions::GetRealLanguageTag() const
{
- return pOptions->GetRealLocale();
+ return pImpl->GetRealLocale();
}
const LanguageTag & SvtSysLocaleOptions::GetRealUILanguageTag() const
{
- return pOptions->GetRealUILocale();
+ return pImpl->GetRealUILocale();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list