summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2021-08-13 13:33:08 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2021-08-13 15:35:36 +0200
commit9753428dfc2bf038188c9a59af7fd2d789b46517 (patch)
tree923a3d1888dbadc38436de76b9cad343be5380fe
parent53b8fcbd3f81903b171fd59478abf0283c6feb24 (diff)
rtl::Static -> thread-safe static local
Change-Id: If5b7181fb1bb3f3f21ec3742680e5a3e12b21b73 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120431 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--desktop/source/deployment/misc/dp_resource.cxx17
-rw-r--r--desktop/source/pkgchk/unopkg/unopkg_misc.cxx42
-rw-r--r--drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx22
-rw-r--r--editeng/source/editeng/eerdll.cxx9
-rw-r--r--editeng/source/misc/acorrcfg.cxx10
-rw-r--r--editeng/source/uno/unotext.cxx91
-rw-r--r--editeng/source/uno/unotext2.cxx84
-rw-r--r--filter/source/config/cache/basecontainer.cxx10
-rw-r--r--filter/source/config/cache/contenthandlerfactory.cxx2
-rw-r--r--filter/source/config/cache/filtercache.hxx3
-rw-r--r--filter/source/config/cache/filterfactory.cxx10
-rw-r--r--filter/source/config/cache/frameloaderfactory.cxx2
-rw-r--r--filter/source/config/cache/typedetection.cxx20
-rw-r--r--filter/source/xsltdialog/xmlfilterdialogcomponent.cxx40
-rw-r--r--framework/source/accelerators/keymapping.cxx10
-rw-r--r--framework/source/helper/statusindicatorfactory.cxx9
-rw-r--r--framework/source/layoutmanager/layoutmanager.cxx12
-rw-r--r--framework/source/services/desktop.cxx14
-rw-r--r--framework/source/uiconfiguration/globalsettings.cxx13
-rw-r--r--framework/source/uiconfiguration/imagemanagerimpl.cxx10
20 files changed, 136 insertions, 294 deletions
diff --git a/desktop/source/deployment/misc/dp_resource.cxx b/desktop/source/deployment/misc/dp_resource.cxx
index 9e0184291ee0..028f03ae92db 100644
--- a/desktop/source/deployment/misc/dp_resource.cxx
+++ b/desktop/source/deployment/misc/dp_resource.cxx
@@ -26,24 +26,17 @@ using namespace ::com::sun::star::uno;
namespace dp_misc
{
-namespace
+const LanguageTag& getOfficeLanguageTag()
{
-struct OfficeLocale : public rtl::StaticWithInit<LanguageTag, OfficeLocale>
-{
- LanguageTag operator()()
- {
+ static const LanguageTag OFFICE_LANG = [&]() {
OUString slang(utl::ConfigManager::getUILocale());
//fallback, the locale is currently only set when the user starts the
//office for the first time.
if (slang.isEmpty())
slang = "en-US";
return LanguageTag(slang);
- }
-};
-
-} // anon namespace
-
-const LanguageTag& getOfficeLanguageTag() { return OfficeLocale::get(); }
+ }();
+ return OFFICE_LANG;
+}
}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/pkgchk/unopkg/unopkg_misc.cxx b/desktop/source/pkgchk/unopkg/unopkg_misc.cxx
index 6861f6459cc0..1524ba80a7ab 100644
--- a/desktop/source/pkgchk/unopkg/unopkg_misc.cxx
+++ b/desktop/source/pkgchk/unopkg/unopkg_misc.cxx
@@ -158,37 +158,31 @@ bool readArgument(
}
-namespace {
-struct ExecutableDir : public rtl::StaticWithInit<
- OUString, ExecutableDir> {
- OUString operator () () {
- OUString path;
- if (osl_getExecutableFile( &path.pData ) != osl_Process_E_None) {
- throw RuntimeException("cannot locate executable directory!",nullptr);
- }
- return path.copy( 0, path.lastIndexOf( '/' ) );
- }
-};
-struct ProcessWorkingDir : public rtl::StaticWithInit<
- OUString, ProcessWorkingDir> {
- OUString operator () () {
- OUString workingDir;
- utl::Bootstrap::getProcessWorkingDir(workingDir);
- return workingDir;
- }
-};
-} // anon namespace
-
-
OUString const & getExecutableDir()
{
- return ExecutableDir::get();
+ static const OUString EXEC =
+ [&]()
+ {
+ OUString path;
+ if (osl_getExecutableFile( &path.pData ) != osl_Process_E_None) {
+ throw RuntimeException("cannot locate executable directory!",nullptr);
+ }
+ return path.copy( 0, path.lastIndexOf( '/' ) );
+ }();
+ return EXEC;
}
OUString const & getProcessWorkingDir()
{
- return ProcessWorkingDir::get();
+ static const OUString WORKING =
+ [&]()
+ {
+ OUString workingDir;
+ utl::Bootstrap::getProcessWorkingDir(workingDir);
+ return workingDir;
+ }();
+ return WORKING;
}
diff --git a/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx b/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
index ff00b91050f6..743fb792147f 100644
--- a/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
+++ b/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
@@ -105,16 +105,13 @@ namespace drawinglayer::primitive3d
}
};
- struct theTubeBuffer :
- public rtl::Static< TubeBuffer, theTubeBuffer > {};
-
Primitive3DContainer getLineTubeSegments(
sal_uInt32 nSegments,
const attribute::MaterialAttribute3D& rMaterial)
{
// static data for buffered tube primitives
- TubeBuffer &rTheBuffer = theTubeBuffer::get();
- return rTheBuffer.getLineTubeSegments(nSegments, rMaterial);
+ static TubeBuffer theTubeBuffer;
+ return theTubeBuffer.getLineTubeSegments(nSegments, rMaterial);
}
class CapBuffer
@@ -183,16 +180,13 @@ namespace drawinglayer::primitive3d
}
};
- struct theCapBuffer :
- public rtl::Static< CapBuffer, theCapBuffer > {};
-
Primitive3DContainer getLineCapSegments(
sal_uInt32 nSegments,
const attribute::MaterialAttribute3D& rMaterial)
{
// static data for buffered cap primitives
- CapBuffer &rTheBuffer = theCapBuffer::get();
- return rTheBuffer.getLineCapSegments(nSegments, rMaterial);
+ static CapBuffer theCapBuffer;
+ return theCapBuffer.getLineCapSegments(nSegments, rMaterial);
}
class CapRoundBuffer
@@ -278,17 +272,13 @@ namespace drawinglayer::primitive3d
};
- struct theCapRoundBuffer :
- public rtl::Static< CapRoundBuffer, theCapRoundBuffer > {};
-
-
Primitive3DContainer getLineCapRoundSegments(
sal_uInt32 nSegments,
const attribute::MaterialAttribute3D& rMaterial)
{
// static data for buffered cap primitives
- CapRoundBuffer &rTheBuffer = theCapRoundBuffer::get();
- return rTheBuffer.getLineCapRoundSegments(nSegments, rMaterial);
+ static CapRoundBuffer theCapRoundBuffer;
+ return theCapRoundBuffer.getLineCapRoundSegments(nSegments, rMaterial);
}
Primitive3DContainer getLineJoinSegments(
diff --git a/editeng/source/editeng/eerdll.cxx b/editeng/source/editeng/eerdll.cxx
index 0e0540bf1244..5e6929ec33a1 100644
--- a/editeng/source/editeng/eerdll.cxx
+++ b/editeng/source/editeng/eerdll.cxx
@@ -64,19 +64,14 @@
#include <editeng/xmlcnitm.hxx>
#include <editeng/forbiddencharacterstable.hxx>
#include <editeng/justifyitem.hxx>
-#include <rtl/instance.hxx>
#include <tools/mapunit.hxx>
using namespace ::com::sun::star;
-namespace
-{
- class theEditDLL : public rtl::Static<EditDLL, theEditDLL> {};
-}
-
EditDLL& EditDLL::Get()
{
- return theEditDLL::get();
+ static EditDLL theEditDLL;
+ return theEditDLL;
}
DefItems::DefItems()
diff --git a/editeng/source/misc/acorrcfg.cxx b/editeng/source/misc/acorrcfg.cxx
index 5489e7d5011f..6d0c0650e416 100644
--- a/editeng/source/misc/acorrcfg.cxx
+++ b/editeng/source/misc/acorrcfg.cxx
@@ -29,8 +29,6 @@
#include <editeng/svxacorr.hxx>
#include <com/sun/star/uno/Sequence.hxx>
-#include <rtl/instance.hxx>
-
using namespace utl;
using namespace com::sun::star;
using namespace com::sun::star::uno;
@@ -601,14 +599,10 @@ void SvxSwAutoCorrCfg::Notify( const Sequence<OUString>& /* aPropertyNames */ )
Load(false);
}
-namespace
-{
- class theSvxAutoCorrCfg : public rtl::Static<SvxAutoCorrCfg, theSvxAutoCorrCfg>{};
-}
-
SvxAutoCorrCfg& SvxAutoCorrCfg::Get()
{
- return theSvxAutoCorrCfg::get();
+ static SvxAutoCorrCfg theSvxAutoCorrCfg;
+ return theSvxAutoCorrCfg;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/editeng/source/uno/unotext.cxx b/editeng/source/uno/unotext.cxx
index 0a3d7f215058..76537f8b425b 100644
--- a/editeng/source/uno/unotext.cxx
+++ b/editeng/source/uno/unotext.cxx
@@ -28,7 +28,6 @@
#include <svl/itemset.hxx>
#include <svl/itempool.hxx>
#include <svl/eitem.hxx>
-#include <rtl/instance.hxx>
#include <tools/debug.hxx>
#include <editeng/unoprnms.hxx>
@@ -1548,36 +1547,19 @@ void SAL_CALL SvxUnoTextRange::release()
// XTypeProvider
-namespace
-{
- struct theSvxUnoTextRangeTypes :
- public rtl::StaticWithInit<uno::Sequence<uno::Type>, theSvxUnoTextRangeTypes>
- {
- uno::Sequence<uno::Type> operator () ()
- {
- uno::Sequence< uno::Type > aTypeSequence;
-
- aTypeSequence.realloc( 9 ); // !DANGER! keep this updated
- uno::Type* pTypes = aTypeSequence.getArray();
-
- *pTypes++ = cppu::UnoType<text::XTextRange>::get();
- *pTypes++ = cppu::UnoType<beans::XPropertySet>::get();
- *pTypes++ = cppu::UnoType<beans::XMultiPropertySet>::get();
- *pTypes++ = cppu::UnoType<beans::XMultiPropertyStates>::get();
- *pTypes++ = cppu::UnoType<beans::XPropertyState>::get();
- *pTypes++ = cppu::UnoType<lang::XServiceInfo>::get();
- *pTypes++ = cppu::UnoType<lang::XTypeProvider>::get();
- *pTypes++ = cppu::UnoType<lang::XUnoTunnel>::get();
- *pTypes++ = cppu::UnoType<text::XTextRangeCompare>::get();
-
- return aTypeSequence;
- }
- };
-}
-
uno::Sequence< uno::Type > SAL_CALL SvxUnoTextRange::getTypes()
{
- return theSvxUnoTextRangeTypes::get();
+ static const uno::Sequence< uno::Type > TYPES {
+ cppu::UnoType<text::XTextRange>::get(),
+ cppu::UnoType<beans::XPropertySet>::get(),
+ cppu::UnoType<beans::XMultiPropertySet>::get(),
+ cppu::UnoType<beans::XMultiPropertyStates>::get(),
+ cppu::UnoType<beans::XPropertyState>::get(),
+ cppu::UnoType<lang::XServiceInfo>::get(),
+ cppu::UnoType<lang::XTypeProvider>::get(),
+ cppu::UnoType<lang::XUnoTunnel>::get(),
+ cppu::UnoType<text::XTextRangeCompare>::get() };
+ return TYPES;
}
uno::Sequence< sal_Int8 > SAL_CALL SvxUnoTextRange::getImplementationId()
@@ -1657,42 +1639,25 @@ uno::Any SAL_CALL SvxUnoTextBase::queryAggregation( const uno::Type & rType )
// XTypeProvider
-namespace
-{
- struct theSvxUnoTextBaseTypes :
- public rtl::StaticWithInit<uno::Sequence<uno::Type>, theSvxUnoTextBaseTypes>
- {
- uno::Sequence<uno::Type> operator () ()
- {
- uno::Sequence< uno::Type > aTypeSequence;
-
- aTypeSequence.realloc( 15 ); // !DANGER! keep this updated
- uno::Type* pTypes = aTypeSequence.getArray();
-
- *pTypes++ = cppu::UnoType<text::XText>::get();
- *pTypes++ = cppu::UnoType<container::XEnumerationAccess>::get();
- *pTypes++ = cppu::UnoType<beans::XPropertySet>::get();
- *pTypes++ = cppu::UnoType<beans::XMultiPropertySet>::get();
- *pTypes++ = cppu::UnoType<beans::XMultiPropertyStates>::get();
- *pTypes++ = cppu::UnoType<beans::XPropertyState>::get();
- *pTypes++ = cppu::UnoType<text::XTextRangeMover>::get();
- *pTypes++ = cppu::UnoType<text::XTextAppend>::get();
- *pTypes++ = cppu::UnoType<text::XTextCopy>::get();
- *pTypes++ = cppu::UnoType<text::XParagraphAppend>::get();
- *pTypes++ = cppu::UnoType<text::XTextPortionAppend>::get();
- *pTypes++ = cppu::UnoType<lang::XServiceInfo>::get();
- *pTypes++ = cppu::UnoType<lang::XTypeProvider>::get();
- *pTypes++ = cppu::UnoType<lang::XUnoTunnel>::get();
- *pTypes++ = cppu::UnoType<text::XTextRangeCompare>::get();
-
- return aTypeSequence;
- }
- };
-}
-
uno::Sequence< uno::Type > SAL_CALL SvxUnoTextBase::getTypes()
{
- return theSvxUnoTextBaseTypes::get();
+ static const uno::Sequence< uno::Type > TYPES {
+ cppu::UnoType<text::XText>::get(),
+ cppu::UnoType<container::XEnumerationAccess>::get(),
+ cppu::UnoType<beans::XPropertySet>::get(),
+ cppu::UnoType<beans::XMultiPropertySet>::get(),
+ cppu::UnoType<beans::XMultiPropertyStates>::get(),
+ cppu::UnoType<beans::XPropertyState>::get(),
+ cppu::UnoType<text::XTextRangeMover>::get(),
+ cppu::UnoType<text::XTextAppend>::get(),
+ cppu::UnoType<text::XTextCopy>::get(),
+ cppu::UnoType<text::XParagraphAppend>::get(),
+ cppu::UnoType<text::XTextPortionAppend>::get(),
+ cppu::UnoType<lang::XServiceInfo>::get(),
+ cppu::UnoType<lang::XTypeProvider>::get(),
+ cppu::UnoType<lang::XUnoTunnel>::get(),
+ cppu::UnoType<text::XTextRangeCompare>::get() };
+ return TYPES;
}
uno::Sequence< sal_Int8 > SAL_CALL SvxUnoTextBase::getImplementationId()
diff --git a/editeng/source/uno/unotext2.cxx b/editeng/source/uno/unotext2.cxx
index f7a2d462e3b3..8ff342d915bb 100644
--- a/editeng/source/uno/unotext2.cxx
+++ b/editeng/source/uno/unotext2.cxx
@@ -181,38 +181,21 @@ void SAL_CALL SvxUnoTextContent::release() noexcept
// XTypeProvider
-namespace
-{
- struct theSvxUnoTextContentTypes :
- public rtl::StaticWithInit<uno::Sequence<uno::Type>, theSvxUnoTextContentTypes>
- {
- uno::Sequence<uno::Type> operator () ()
- {
- uno::Sequence< uno::Type > aTypeSequence;
-
- aTypeSequence.realloc( 11 ); // !DANGER! keep this updated
- uno::Type* pTypes = aTypeSequence.getArray();
-
- *pTypes++ = cppu::UnoType<text::XTextRange>::get();
- *pTypes++ = cppu::UnoType<beans::XPropertySet>::get();
- *pTypes++ = cppu::UnoType<beans::XMultiPropertySet>::get();
- *pTypes++ = cppu::UnoType<beans::XMultiPropertyStates>::get();
- *pTypes++ = cppu::UnoType<beans::XPropertyState>::get();
- *pTypes++ = cppu::UnoType<text::XTextRangeCompare>::get();
- *pTypes++ = cppu::UnoType<text::XTextContent>::get();
- *pTypes++ = cppu::UnoType<container::XEnumerationAccess>::get();
- *pTypes++ = cppu::UnoType<lang::XServiceInfo>::get();
- *pTypes++ = cppu::UnoType<lang::XTypeProvider>::get();
- *pTypes++ = cppu::UnoType<lang::XUnoTunnel>::get();
-
- return aTypeSequence;
- }
- };
-}
-
uno::Sequence< uno::Type > SAL_CALL SvxUnoTextContent::getTypes()
{
- return theSvxUnoTextContentTypes::get();
+ static const uno::Sequence< uno::Type > TYPES {
+ cppu::UnoType<text::XTextRange>::get(),
+ cppu::UnoType<beans::XPropertySet>::get(),
+ cppu::UnoType<beans::XMultiPropertySet>::get(),
+ cppu::UnoType<beans::XMultiPropertyStates>::get(),
+ cppu::UnoType<beans::XPropertyState>::get(),
+ cppu::UnoType<text::XTextRangeCompare>::get(),
+ cppu::UnoType<text::XTextContent>::get(),
+ cppu::UnoType<container::XEnumerationAccess>::get(),
+ cppu::UnoType<lang::XServiceInfo>::get(),
+ cppu::UnoType<lang::XTypeProvider>::get(),
+ cppu::UnoType<lang::XUnoTunnel>::get() };
+ return TYPES;
}
uno::Sequence< sal_Int8 > SAL_CALL SvxUnoTextContent::getImplementationId()
@@ -501,38 +484,21 @@ void SAL_CALL SvxUnoTextCursor::release() noexcept
OWeakAggObject::release();
}
-namespace
-{
- struct theSvxUnoTextCursorTypes :
- public rtl::StaticWithInit<uno::Sequence<uno::Type>, theSvxUnoTextCursorTypes>
- {
- uno::Sequence<uno::Type> operator () ()
- {
- uno::Sequence< uno::Type > aTypeSequence;
-
- aTypeSequence.realloc( 10 ); // !DANGER! keep this updated
- uno::Type* pTypes = aTypeSequence.getArray();
-
- *pTypes++ = cppu::UnoType<text::XTextRange>::get();
- *pTypes++ = cppu::UnoType<text::XTextCursor>::get();
- *pTypes++ = cppu::UnoType<beans::XPropertySet>::get();
- *pTypes++ = cppu::UnoType<beans::XMultiPropertySet>::get();
- *pTypes++ = cppu::UnoType<beans::XMultiPropertyStates>::get();
- *pTypes++ = cppu::UnoType<beans::XPropertyState>::get();
- *pTypes++ = cppu::UnoType<text::XTextRangeCompare>::get();
- *pTypes++ = cppu::UnoType<lang::XServiceInfo>::get();
- *pTypes++ = cppu::UnoType<lang::XTypeProvider>::get();
- *pTypes++ = cppu::UnoType<lang::XUnoTunnel>::get();
-
- return aTypeSequence;
- }
- };
-}
-
// XTypeProvider
uno::Sequence< uno::Type > SAL_CALL SvxUnoTextCursor::getTypes()
{
- return theSvxUnoTextCursorTypes::get();
+ static const uno::Sequence< uno::Type > TYPES {
+ cppu::UnoType<text::XTextRange>::get(),
+ cppu::UnoType<text::XTextCursor>::get(),
+ cppu::UnoType<beans::XPropertySet>::get(),
+ cppu::UnoType<beans::XMultiPropertySet>::get(),
+ cppu::UnoType<beans::XMultiPropertyStates>::get(),
+ cppu::UnoType<beans::XPropertyState>::get(),
+ cppu::UnoType<text::XTextRangeCompare>::get(),
+ cppu::UnoType<lang::XServiceInfo>::get(),
+ cppu::UnoType<lang::XTypeProvider>::get(),
+ cppu::UnoType<lang::XUnoTunnel>::get() };
+ return TYPES;
}
uno::Sequence< sal_Int8 > SAL_CALL SvxUnoTextCursor::getImplementationId()
diff --git a/filter/source/config/cache/basecontainer.cxx b/filter/source/config/cache/basecontainer.cxx
index 4047f4df2719..023afd29415a 100644
--- a/filter/source/config/cache/basecontainer.cxx
+++ b/filter/source/config/cache/basecontainer.cxx
@@ -38,7 +38,7 @@ BaseContainer::BaseContainer()
, m_eType()
, m_lListener (m_aLock)
{
- TheFilterCache::get().load(FilterCache::E_CONTAINS_STANDARD);
+ GetTheFilterCache().load(FilterCache::E_CONTAINS_STANDARD);
}
@@ -93,7 +93,7 @@ void BaseContainer::impl_loadOnDemand()
break;
}
- TheFilterCache::get().load(eRequiredState);
+ GetTheFilterCache().load(eRequiredState);
// <- SAFE
#endif
}
@@ -104,7 +104,7 @@ void BaseContainer::impl_initFlushMode()
// SAFE ->
osl::MutexGuard aLock(m_aLock);
if (!m_pFlushCache)
- m_pFlushCache = TheFilterCache::get().clone();
+ m_pFlushCache = GetTheFilterCache().clone();
if (!m_pFlushCache)
throw css::uno::RuntimeException( "Can not create write copy of internal used cache on demand.",
static_cast< OWeakObject* >(this));
@@ -119,7 +119,7 @@ FilterCache* BaseContainer::impl_getWorkingCache() const
if (m_pFlushCache)
return m_pFlushCache.get();
else
- return &TheFilterCache::get();
+ return &GetTheFilterCache();
// <- SAFE
}
@@ -422,7 +422,7 @@ void SAL_CALL BaseContainer::flush()
If the global cache gets this information via listener,
we should remove this method!
*/
- TheFilterCache::get().takeOver(*m_pFlushCache);
+ GetTheFilterCache().takeOver(*m_pFlushCache);
}
catch(const css::uno::Exception& ex)
{
diff --git a/filter/source/config/cache/contenthandlerfactory.cxx b/filter/source/config/cache/contenthandlerfactory.cxx
index a5140acdbed2..a3bf71cf22ed 100644
--- a/filter/source/config/cache/contenthandlerfactory.cxx
+++ b/filter/source/config/cache/contenthandlerfactory.cxx
@@ -55,7 +55,7 @@ css::uno::Reference< css::uno::XInterface > SAL_CALL ContentHandlerFactory::crea
// SAFE ->
osl::MutexGuard aLock(m_aLock);
- auto & cache = TheFilterCache::get();
+ auto & cache = GetTheFilterCache();
// search handler on cache
CacheItem aHandler = cache.getItem(FilterCache::E_CONTENTHANDLER, sHandler);
diff --git a/filter/source/config/cache/filtercache.hxx b/filter/source/config/cache/filtercache.hxx
index 66d07467f6f3..a0ef79c93931 100644
--- a/filter/source/config/cache/filtercache.hxx
+++ b/filter/source/config/cache/filtercache.hxx
@@ -29,7 +29,6 @@
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/uno/Any.h>
#include <comphelper/documentconstants.hxx>
-#include <rtl/instance.hxx>
#include <rtl/ref.hxx>
#include <rtl/ustring.hxx>
@@ -933,7 +932,7 @@ class FilterCache : public BaseLock
static css::uno::Sequence< OUString > impl_convertFlagField2FlagNames(SfxFilterFlags nFlags);
};
-struct TheFilterCache: public rtl::Static<FilterCache, TheFilterCache> {};
+FilterCache& GetTheFilterCache();
} // namespace filter::config
diff --git a/filter/source/config/cache/filterfactory.cxx b/filter/source/config/cache/filterfactory.cxx
index e499b4bad633..8832330d5a04 100644
--- a/filter/source/config/cache/filterfactory.cxx
+++ b/filter/source/config/cache/filterfactory.cxx
@@ -30,6 +30,12 @@
namespace filter::config{
+FilterCache& GetTheFilterCache()
+{
+ static FilterCache CACHE;
+ return CACHE;
+}
+
/** @short define all possible parts of a filter query.
@descr syntax: "<query>[:<param>[=<value>]]"
@@ -73,7 +79,7 @@ css::uno::Reference< css::uno::XInterface > SAL_CALL FilterFactory::createInstan
// SAFE ->
osl::MutexGuard aLock(m_aLock);
- auto & cache = TheFilterCache::get();
+ auto & cache = GetTheFilterCache();
// search filter on cache
CacheItem aFilter = cache.getItem(FilterCache::E_FILTER, sFilter);
@@ -122,7 +128,7 @@ css::uno::Sequence< OUString > SAL_CALL FilterFactory::getAvailableServiceNames(
std::vector<OUString> lUNOFilters;
try
{
- lUNOFilters = TheFilterCache::get().getMatchingItemsByProps(FilterCache::E_FILTER, lIProps, lEProps);
+ lUNOFilters = GetTheFilterCache().getMatchingItemsByProps(FilterCache::E_FILTER, lIProps, lEProps);
}
catch(const css::uno::RuntimeException&)
{ throw; }
diff --git a/filter/source/config/cache/frameloaderfactory.cxx b/filter/source/config/cache/frameloaderfactory.cxx
index c7906b4acf1d..a3aef82e4c6c 100644
--- a/filter/source/config/cache/frameloaderfactory.cxx
+++ b/filter/source/config/cache/frameloaderfactory.cxx
@@ -53,7 +53,7 @@ css::uno::Reference< css::uno::XInterface > SAL_CALL FrameLoaderFactory::createI
// SAFE ->
osl::MutexGuard aLock(m_aLock);
- auto & cache = TheFilterCache::get();
+ auto & cache = GetTheFilterCache();
// search loader on cache
CacheItem aLoader = cache.getItem(m_eType, sLoader);
diff --git a/filter/source/config/cache/typedetection.cxx b/filter/source/config/cache/typedetection.cxx
index 34d0d49d5af9..1fd7cccc49ab 100644
--- a/filter/source/config/cache/typedetection.cxx
+++ b/filter/source/config/cache/typedetection.cxx
@@ -82,7 +82,7 @@ OUString SAL_CALL TypeDetection::queryTypeByURL(const OUString& sURL)
// set std types as minimum requirement first!
// Only in case no type was found for given URL,
// use optional types too ...
- auto & cache = TheFilterCache::get();
+ auto & cache = GetTheFilterCache();
FlatDetection lFlatTypes;
cache.detectFlatForURL(aURL, lFlatTypes);
@@ -473,7 +473,7 @@ void TypeDetection::impl_checkResultsAndAddBestFilter(utl::MediaDescriptor& rDes
if (!sFilter.isEmpty())
return;
- auto & cache = TheFilterCache::get();
+ auto & cache = GetTheFilterCache();
// b)
// check a preselected document service too.
@@ -642,7 +642,7 @@ bool TypeDetection::impl_getPreselectionForType(
{
// SAFE -> --------------------------
osl::MutexGuard aLock(m_aLock);
- aType = TheFilterCache::get().getItem(FilterCache::E_TYPE, sType);
+ aType = GetTheFilterCache().getItem(FilterCache::E_TYPE, sType);
// <- SAFE --------------------------
}
catch(const css::container::NoSuchElementException&)
@@ -732,7 +732,7 @@ void TypeDetection::impl_getPreselectionForDocumentService(
// Attention: For executing next lines of code, We must be sure that
// all filters already loaded :-(
// That can disturb our "load on demand feature". But we have no other chance!
- auto & cache = TheFilterCache::get();
+ auto & cache = GetTheFilterCache();
cache.load(FilterCache::E_CONTAINS_FILTERS);
CacheItem lIProps;
@@ -766,7 +766,7 @@ OUString TypeDetection::impl_getTypeFromFilter(const OUString& rFilterName)
try
{
osl::MutexGuard aLock(m_aLock);
- aFilter = TheFilterCache::get().getItem(FilterCache::E_FILTER, rFilterName);
+ aFilter = GetTheFilterCache().getItem(FilterCache::E_FILTER, rFilterName);
}
catch (const container::NoSuchElementException&)
{
@@ -788,7 +788,7 @@ void TypeDetection::impl_getAllFormatTypes(
try
{
osl::MutexGuard aLock(m_aLock);
- auto & cache = TheFilterCache::get();
+ auto & cache = GetTheFilterCache();
cache.load(FilterCache::E_CONTAINS_FILTERS);
aFilterNames = cache.getItemNames(FilterCache::E_FILTER);
}
@@ -813,7 +813,7 @@ void TypeDetection::impl_getAllFormatTypes(
{
// Get all types that match the URL alone.
FlatDetection aFlatByURL;
- TheFilterCache::get().detectFlatForURL(aParsedURL, aFlatByURL);
+ GetTheFilterCache().detectFlatForURL(aParsedURL, aFlatByURL);
for (auto const& elem : aFlatByURL)
{
FlatDetection::iterator itPos = std::find_if(rFlatTypes.begin(), rFlatTypes.end(), FindByType(elem.sType));
@@ -900,7 +900,7 @@ OUString TypeDetection::impl_detectTypeFlatAndDeep( utl::MediaDescriptor& r
{
// SAFE -> ----------------------------------
osl::ClearableMutexGuard aLock(m_aLock);
- CacheItem aType = TheFilterCache::get().getItem(FilterCache::E_TYPE, sFlatType);
+ CacheItem aType = GetTheFilterCache().getItem(FilterCache::E_TYPE, sFlatType);
aLock.clear();
OUString sDetectService;
@@ -1155,7 +1155,7 @@ bool TypeDetection::impl_validateAndSetTypeOnDescriptor( utl::MediaDescript
// SAFE ->
{
osl::MutexGuard aLock(m_aLock);
- if (TheFilterCache::get().hasItem(FilterCache::E_TYPE, sType))
+ if (GetTheFilterCache().hasItem(FilterCache::E_TYPE, sType))
{
rDescriptor[utl::MediaDescriptor::PROP_TYPENAME()] <<= sType;
return true;
@@ -1177,7 +1177,7 @@ bool TypeDetection::impl_validateAndSetFilterOnDescriptor( utl::MediaDescri
// SAFE ->
osl::ClearableMutexGuard aLock(m_aLock);
- auto & cache = TheFilterCache::get();
+ auto & cache = GetTheFilterCache();
CacheItem aFilter = cache.getItem(FilterCache::E_FILTER, sFilter);
OUString sType;
aFilter[PROPNAME_TYPE] >>= sType;
diff --git a/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx b/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx
index ec7b04b964fd..095e00e6ab0b 100644
--- a/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx
+++ b/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx
@@ -31,7 +31,6 @@
#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <vcl/svapp.hxx>
-#include <rtl/instance.hxx>
#include "xmlfiltersettingsdialog.hxx"
@@ -162,42 +161,23 @@ OUString SAL_CALL XMLFilterDialogComponent::getImplementationName()
return "com.sun.star.comp.ui.XSLTFilterDialog";
}
-namespace { struct lcl_ImplId : public rtl::Static< ::cppu::OImplementationId, lcl_ImplId > {}; }
-
Sequence< sal_Int8 > SAL_CALL XMLFilterDialogComponent::getImplementationId()
{
- return css::uno::Sequence<sal_Int8>();
+ static ::cppu::OImplementationId implId;
+ return implId.getImplementationId();
}
-namespace
-{
- class DialogComponentTypes
- {
- private:
- OTypeCollection m_aTypes;
- public:
- DialogComponentTypes() :
- m_aTypes(
- cppu::UnoType<XComponent>::get(),
- cppu::UnoType<XTypeProvider>::get(),
- cppu::UnoType<XAggregation>::get(),
- cppu::UnoType<XWeak>::get(),
- cppu::UnoType<XServiceInfo>::get(),
- cppu::UnoType<XInitialization>::get(),
- cppu::UnoType<XTerminateListener>::get(),
- cppu::UnoType<css::ui::dialogs::XExecutableDialog>::get())
- {
- }
- OTypeCollection& getTypeCollection() { return m_aTypes; }
- };
-
- struct theDialogComponentTypes : rtl::Static<DialogComponentTypes, theDialogComponentTypes> {};
-}
-
Sequence< Type > XMLFilterDialogComponent::getTypes()
{
- return theDialogComponentTypes::get().getTypeCollection().getTypes();
+ return { cppu::UnoType<XComponent>::get(),
+ cppu::UnoType<XTypeProvider>::get(),
+ cppu::UnoType<XAggregation>::get(),
+ cppu::UnoType<XWeak>::get(),
+ cppu::UnoType<XServiceInfo>::get(),
+ cppu::UnoType<XInitialization>::get(),
+ cppu::UnoType<XTerminateListener>::get(),
+ cppu::UnoType<css::ui::dialogs::XExecutableDialog>::get() };
}
Sequence< OUString > SAL_CALL XMLFilterDialogComponent::getSupportedServiceNames()
diff --git a/framework/source/accelerators/keymapping.cxx b/framework/source/accelerators/keymapping.cxx
index 5f78d6dd65b0..1a5648c8d43a 100644
--- a/framework/source/accelerators/keymapping.cxx
+++ b/framework/source/accelerators/keymapping.cxx
@@ -21,7 +21,6 @@
#include <com/sun/star/awt/Key.hpp>
#include <com/sun/star/lang/IllegalArgumentException.hpp>
-#include <rtl/instance.hxx>
namespace framework
{
@@ -154,14 +153,9 @@ KeyMapping::KeyMapping()
}
}
-namespace {
-
-struct Instance: public rtl::Static<KeyMapping, Instance> {};
-
-}
-
KeyMapping & KeyMapping::get() {
- return Instance::get();
+ static KeyMapping KEYS;
+ return KEYS;
}
sal_uInt16 KeyMapping::mapIdentifierToCode(const OUString& sIdentifier)
diff --git a/framework/source/helper/statusindicatorfactory.cxx b/framework/source/helper/statusindicatorfactory.cxx
index 45c96b373f1a..65cf6141d5ae 100644
--- a/framework/source/helper/statusindicatorfactory.cxx
+++ b/framework/source/helper/statusindicatorfactory.cxx
@@ -42,12 +42,6 @@ namespace framework{
sal_Int32 StatusIndicatorFactory::m_nInReschedule = 0; ///< static counter for rescheduling
-namespace {
-
-struct RescheduleLock: public rtl::Static<osl::Mutex, RescheduleLock> {}; ///< mutex to guard the m_nInReschedule
-
-}
-
constexpr OUStringLiteral PROGRESS_RESOURCE = u"private:resource/progressbar/progressbar";
StatusIndicatorFactory::StatusIndicatorFactory(const css::uno::Reference< css::uno::XComponentContext >& xContext)
@@ -518,8 +512,9 @@ void StatusIndicatorFactory::impl_reschedule(bool bForce)
if (!bReschedule)
return;
+ static osl::Mutex rescheduleLock;
// SAFE ->
- osl::ResettableMutexGuard aRescheduleGuard(RescheduleLock::get());
+ osl::ResettableMutexGuard aRescheduleGuard(rescheduleLock);
if (m_nInReschedule != 0)
return;
diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx
index 4d821b4e08ae..b46db52906ff 100644
--- a/framework/source/layoutmanager/layoutmanager.cxx
+++ b/framework/source/layoutmanager/layoutmanager.cxx
@@ -58,7 +58,6 @@
#include <toolkit/helper/vclunohelper.hxx>
#include <toolkit/awt/vclxmenu.hxx>
#include <comphelper/uno3.hxx>
-#include <rtl/instance.hxx>
#include <officecfg/Office/Compatibility.hxx>
#include <rtl/ref.hxx>
@@ -3066,18 +3065,11 @@ namespace detail
::cppu::OPropertyArrayHelper& getHelper() { return *m_pInfoHelper; }
};
}
-namespace
-{
- struct theInfoHelper :
- public rtl::StaticWithArg< detail::InfoHelperBuilder, LayoutManager,
- theInfoHelper >
- {
- };
-}
::cppu::IPropertyArrayHelper& SAL_CALL LayoutManager::getInfoHelper()
{
- return theInfoHelper::get(*this).getHelper();
+ static detail::InfoHelperBuilder INFO(*this);
+ return INFO.getHelper();
}
uno::Reference< beans::XPropertySetInfo > SAL_CALL LayoutManager::getPropertySetInfo()
diff --git a/framework/source/services/desktop.cxx b/framework/source/services/desktop.cxx
index ea2f0cac77f5..c369998365fe 100644
--- a/framework/source/services/desktop.cxx
+++ b/framework/source/services/desktop.cxx
@@ -51,7 +51,6 @@
#include <comphelper/sequence.hxx>
#include <comphelper/lok.hxx>
#include <cppuhelper/supportsservice.hxx>
-#include <rtl/instance.hxx>
#include <vcl/svapp.hxx>
#include <desktop/crashreport.hxx>
#include <vcl/scheduler.hxx>
@@ -1441,11 +1440,9 @@ void SAL_CALL Desktop::getFastPropertyValue( css::uno::Any& aValue ,
::cppu::IPropertyArrayHelper& SAL_CALL Desktop::getInfoHelper()
{
- struct Static:
- public rtl::StaticWithInit<cppu::OPropertyArrayHelper, Static>
- {
- cppu::OPropertyArrayHelper operator ()() {
- return {
+ static cppu::OPropertyArrayHelper HELPER =
+ [&] () {
+ return cppu::OPropertyArrayHelper {
{{"ActiveFrame", PropHandle::ActiveFrame,
cppu::UnoType<css::lang::XComponent>::get(),
(css::beans::PropertyAttribute::TRANSIENT
@@ -1464,9 +1461,8 @@ void SAL_CALL Desktop::getFastPropertyValue( css::uno::Any& aValue ,
{"Title", PropHandle::Title, cppu::UnoType<OUString>::get(),
css::beans::PropertyAttribute::TRANSIENT}},
true};
- }
- };
- return Static::get();
+ }();
+ return HELPER;
}
/*-************************************************************************************************************
diff --git a/framework/source/uiconfiguration/globalsettings.cxx b/framework/source/uiconfiguration/globalsettings.cxx
index 2727c2bb24cb..5efaa204274b 100644
--- a/framework/source/uiconfiguration/globalsettings.cxx
+++ b/framework/source/uiconfiguration/globalsettings.cxx
@@ -25,7 +25,6 @@
#include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/lang/XEventListener.hpp>
-#include <rtl/instance.hxx>
#include <rtl/ref.hxx>
#include <comphelper/propertysequence.hxx>
#include <cppuhelper/implbase.hxx>
@@ -222,19 +221,9 @@ void GlobalSettings_Access::impl_initConfigAccess()
// global class
-namespace {
-
-struct mutexGlobalSettings : public rtl::Static< osl::Mutex, mutexGlobalSettings > {};
-
-}
-
-static rtl::Reference<GlobalSettings_Access> pStaticSettings;
-
static GlobalSettings_Access* GetGlobalSettings( const css::uno::Reference< css::uno::XComponentContext >& rxContext )
{
- osl::MutexGuard aGuard(mutexGlobalSettings::get());
- if ( !pStaticSettings )
- pStaticSettings = new GlobalSettings_Access( rxContext );
+ static rtl::Reference<GlobalSettings_Access> pStaticSettings = new GlobalSettings_Access( rxContext );
return pStaticSettings.get();
}
diff --git a/framework/source/uiconfiguration/imagemanagerimpl.cxx b/framework/source/uiconfiguration/imagemanagerimpl.cxx
index 04ec4db065e1..f479063b4bfc 100644
--- a/framework/source/uiconfiguration/imagemanagerimpl.cxx
+++ b/framework/source/uiconfiguration/imagemanagerimpl.cxx
@@ -44,7 +44,6 @@
#include <unotools/ucbstreamhelper.hxx>
#include <vcl/filter/PngImageReader.hxx>
#include <vcl/pngwrite.hxx>
-#include <rtl/instance.hxx>
#include <memory>
using ::com::sun::star::uno::Sequence;
@@ -86,15 +85,10 @@ namespace framework
static GlobalImageList* pGlobalImageList = nullptr;
-namespace
-{
- class theGlobalImageListMutex
- : public rtl::Static<osl::Mutex, theGlobalImageListMutex> {};
-}
-
static osl::Mutex& getGlobalImageListMutex()
{
- return theGlobalImageListMutex::get();
+ static osl::Mutex mutex;
+ return mutex;
}
static GlobalImageList* getGlobalImageList( const uno::Reference< uno::XComponentContext >& rxContext )