Kaydet (Commit) 02a7f9e1 authored tarafından Jochen Nitschke's avatar Jochen Nitschke

stoc: replace double-checked locking with static initializers

Change-Id: I2a36033d0377a58dc27564e903e2c7ce02696206
Reviewed-on: https://gerrit.libreoffice.org/55900Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
Reviewed-by: 's avatarJochen Nitschke <j.nitschke+logerrit@ok.de>
üst 1b897f16
...@@ -52,19 +52,11 @@ void ArrayIdlClassImpl::release() throw() ...@@ -52,19 +52,11 @@ void ArrayIdlClassImpl::release() throw()
Sequence< Type > ArrayIdlClassImpl::getTypes() Sequence< Type > ArrayIdlClassImpl::getTypes()
{ {
static ::cppu::OTypeCollection * s_pTypes = nullptr; static cppu::OTypeCollection s_aTypes(
if (! s_pTypes) cppu::UnoType<XIdlArray>::get(),
{ IdlClassImpl::getTypes() );
::osl::MutexGuard aGuard( getMutexAccess() );
if (! s_pTypes) return s_aTypes.getTypes();
{
static ::cppu::OTypeCollection s_aTypes(
cppu::UnoType<XIdlArray>::get(),
IdlClassImpl::getTypes() );
s_pTypes = &s_aTypes;
}
}
return s_pTypes->getTypes();
} }
Sequence< sal_Int8 > ArrayIdlClassImpl::getImplementationId() Sequence< sal_Int8 > ArrayIdlClassImpl::getImplementationId()
......
...@@ -35,17 +35,9 @@ ClassNameVector g_aClassNames; ...@@ -35,17 +35,9 @@ ClassNameVector g_aClassNames;
::osl::Mutex & getMutexAccess() ::osl::Mutex & getMutexAccess()
{ {
static ::osl::Mutex * s_pMutex = nullptr; static osl::Mutex s_aMutex;
if (! s_pMutex)
{ return s_aMutex;
::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
if (! s_pMutex)
{
static ::osl::Mutex s_aMutex;
s_pMutex = &s_aMutex;
}
}
return *s_pMutex;
} }
......
...@@ -94,20 +94,12 @@ void IdlCompFieldImpl::release() throw() ...@@ -94,20 +94,12 @@ void IdlCompFieldImpl::release() throw()
Sequence< Type > IdlCompFieldImpl::getTypes() Sequence< Type > IdlCompFieldImpl::getTypes()
{ {
static ::cppu::OTypeCollection * s_pTypes = nullptr; static cppu::OTypeCollection s_aTypes(
if (! s_pTypes) cppu::UnoType<XIdlField2>::get(),
{ cppu::UnoType<XIdlField>::get(),
::osl::MutexGuard aGuard( getMutexAccess() ); IdlMemberImpl::getTypes() );
if (! s_pTypes)
{ return s_aTypes.getTypes();
static ::cppu::OTypeCollection s_aTypes(
cppu::UnoType<XIdlField2>::get(),
cppu::UnoType<XIdlField>::get(),
IdlMemberImpl::getTypes() );
s_pTypes = &s_aTypes;
}
}
return s_pTypes->getTypes();
} }
Sequence< sal_Int8 > IdlCompFieldImpl::getImplementationId() Sequence< sal_Int8 > IdlCompFieldImpl::getImplementationId()
......
...@@ -82,21 +82,13 @@ void IdlReflectionServiceImpl::release() throw() ...@@ -82,21 +82,13 @@ void IdlReflectionServiceImpl::release() throw()
Sequence< Type > IdlReflectionServiceImpl::getTypes() Sequence< Type > IdlReflectionServiceImpl::getTypes()
{ {
static OTypeCollection * s_pTypes = nullptr; static OTypeCollection s_aTypes(
if (! s_pTypes) cppu::UnoType<XIdlReflection>::get(),
{ cppu::UnoType<XHierarchicalNameAccess>::get(),
MutexGuard aGuard( _aComponentMutex ); cppu::UnoType<XServiceInfo>::get(),
if (! s_pTypes) OComponentHelper::getTypes() );
{
static OTypeCollection s_aTypes( return s_aTypes.getTypes();
cppu::UnoType<XIdlReflection>::get(),
cppu::UnoType<XHierarchicalNameAccess>::get(),
cppu::UnoType<XServiceInfo>::get(),
OComponentHelper::getTypes() );
s_pTypes = &s_aTypes;
}
}
return s_pTypes->getTypes();
} }
Sequence< sal_Int8 > IdlReflectionServiceImpl::getImplementationId() Sequence< sal_Int8 > IdlReflectionServiceImpl::getImplementationId()
......
...@@ -88,20 +88,12 @@ void IdlEnumFieldImpl::release() throw() ...@@ -88,20 +88,12 @@ void IdlEnumFieldImpl::release() throw()
Sequence< Type > IdlEnumFieldImpl::getTypes() Sequence< Type > IdlEnumFieldImpl::getTypes()
{ {
static ::cppu::OTypeCollection * s_pTypes = nullptr; static cppu::OTypeCollection s_aTypes(
if (! s_pTypes) cppu::UnoType<XIdlField2>::get(),
{ cppu::UnoType<XIdlField>::get(),
::osl::MutexGuard aGuard( getMutexAccess() ); IdlMemberImpl::getTypes() );
if (! s_pTypes)
{ return s_aTypes.getTypes();
static ::cppu::OTypeCollection s_aTypes(
cppu::UnoType<XIdlField2>::get(),
cppu::UnoType<XIdlField>::get(),
IdlMemberImpl::getTypes() );
s_pTypes = &s_aTypes;
}
}
return s_pTypes->getTypes();
} }
Sequence< sal_Int8 > IdlEnumFieldImpl::getImplementationId() Sequence< sal_Int8 > IdlEnumFieldImpl::getImplementationId()
......
...@@ -121,20 +121,12 @@ void IdlAttributeFieldImpl::release() throw() ...@@ -121,20 +121,12 @@ void IdlAttributeFieldImpl::release() throw()
Sequence< Type > IdlAttributeFieldImpl::getTypes() Sequence< Type > IdlAttributeFieldImpl::getTypes()
{ {
static ::cppu::OTypeCollection * s_pTypes = nullptr; static cppu::OTypeCollection s_aTypes(
if (! s_pTypes) cppu::UnoType<XIdlField2>::get(),
{ cppu::UnoType<XIdlField>::get(),
::osl::MutexGuard aGuard( getMutexAccess() ); IdlMemberImpl::getTypes() );
if (! s_pTypes)
{ return s_aTypes.getTypes();
static ::cppu::OTypeCollection s_aTypes(
cppu::UnoType<XIdlField2>::get(),
cppu::UnoType<XIdlField>::get(),
IdlMemberImpl::getTypes() );
s_pTypes = &s_aTypes;
}
}
return s_pTypes->getTypes();
} }
Sequence< sal_Int8 > IdlAttributeFieldImpl::getImplementationId() Sequence< sal_Int8 > IdlAttributeFieldImpl::getImplementationId()
...@@ -383,19 +375,11 @@ void IdlInterfaceMethodImpl::release() throw() ...@@ -383,19 +375,11 @@ void IdlInterfaceMethodImpl::release() throw()
Sequence< Type > IdlInterfaceMethodImpl::getTypes() Sequence< Type > IdlInterfaceMethodImpl::getTypes()
{ {
static ::cppu::OTypeCollection * s_pTypes = nullptr; static cppu::OTypeCollection s_aTypes(
if (! s_pTypes) cppu::UnoType<XIdlMethod>::get(),
{ IdlMemberImpl::getTypes() );
::osl::MutexGuard aGuard( getMutexAccess() );
if (! s_pTypes) return s_aTypes.getTypes();
{
static ::cppu::OTypeCollection s_aTypes(
cppu::UnoType<XIdlMethod>::get(),
IdlMemberImpl::getTypes() );
s_pTypes = &s_aTypes;
}
}
return s_pTypes->getTypes();
} }
Sequence< sal_Int8 > IdlInterfaceMethodImpl::getImplementationId() Sequence< sal_Int8 > IdlInterfaceMethodImpl::getImplementationId()
......
...@@ -99,17 +99,9 @@ struct StringPool ...@@ -99,17 +99,9 @@ struct StringPool
const StringPool &spool() const StringPool &spool()
{ {
static StringPool *pPool = nullptr; static StringPool s_pool;
if( ! pPool )
{ return s_pool;
MutexGuard guard( Mutex::getGlobalMutex() );
if( ! pPool )
{
static StringPool pool;
pPool = &pool;
}
}
return *pPool;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment