Kaydet (Commit) d69795b9 authored tarafından Jochen Nitschke's avatar Jochen Nitschke Kaydeden (comit) Noel Grandin

use local statics in getTypes functions

... instead of double checked locking patterns.

Change-Id: I1b86ce723ff22dd357b3ed69a52757b085472424
Reviewed-on: https://gerrit.libreoffice.org/38906Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 76ed00f8
......@@ -3130,21 +3130,13 @@ void SfxLibrary::removeByName( const OUString& Name )
// XTypeProvider
Sequence< Type > SfxLibrary::getTypes()
{
static OTypeCollection * s_pTypes_NameContainer = nullptr;
if( !s_pTypes_NameContainer )
{
MutexGuard aGuard( Mutex::getGlobalMutex() );
if( !s_pTypes_NameContainer )
{
static OTypeCollection s_aTypes_NameContainer(
static OTypeCollection ourTypes_NameContainer(
cppu::UnoType<XNameContainer>::get(),
cppu::UnoType<XContainer>::get(),
cppu::UnoType<XChangesNotifier>::get(),
OComponentHelper::getTypes() );
s_pTypes_NameContainer = &s_aTypes_NameContainer;
}
}
return s_pTypes_NameContainer->getTypes();
return ourTypes_NameContainer.getTypes();
}
......
......@@ -27,7 +27,6 @@
#include <cppuhelper/weakref.hxx>
#include <editeng/unopracc.hxx>
#include <editeng/unoedsrc.hxx>
#include <osl/mutex.hxx>
using namespace ::com::sun::star;
......@@ -67,30 +66,14 @@ void SAL_CALL SvxAccessibleTextPropertySet::release()
// XTypeProvider
uno::Sequence< uno::Type > SAL_CALL SvxAccessibleTextPropertySet::getTypes()
{
static ::cppu::OTypeCollection* pTypeCollection = nullptr ;
// double-checked locking pattern.
if ( pTypeCollection == nullptr )
{
osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ;
// Control these pointer again ... it can be, that another instance will be faster then these!
if ( pTypeCollection == nullptr )
{
// Create a static typecollection ...
static ::cppu::OTypeCollection aTypeCollection(
static ::cppu::OTypeCollection ourTypeCollection(
::cppu::UnoType<beans::XPropertySet>::get(),
::cppu::UnoType<beans::XMultiPropertySet>::get(),
::cppu::UnoType<beans::XPropertyState>::get(),
::cppu::UnoType<lang::XServiceInfo>::get(),
::cppu::UnoType<lang::XTypeProvider>::get() );
// ... and set his address to static pointer!
pTypeCollection = &aTypeCollection ;
}
}
return pTypeCollection->getTypes() ;
return ourTypeCollection.getTypes() ;
}
uno::Sequence< sal_Int8 > SAL_CALL SvxAccessibleTextPropertySet::getImplementationId()
......
......@@ -137,29 +137,22 @@ XTYPEPROVIDER_COMMON_IMPL( CachedContentResultSetStub )
Sequence< Type > SAL_CALL CachedContentResultSetStub
::getTypes()
{
static Sequence< Type >* pTypes = nullptr;
if( !pTypes )
{
osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
if( !pTypes )
{
pTypes = new Sequence< Type >(13);
(*pTypes)[0] = CPPU_TYPE_REF( XTypeProvider );
(*pTypes)[1] = CPPU_TYPE_REF( XServiceInfo );
(*pTypes)[2] = CPPU_TYPE_REF( XComponent );
(*pTypes)[3] = CPPU_TYPE_REF( XCloseable );
(*pTypes)[4] = CPPU_TYPE_REF( XResultSetMetaDataSupplier );
(*pTypes)[5] = CPPU_TYPE_REF( XPropertySet );
(*pTypes)[6] = CPPU_TYPE_REF( XPropertyChangeListener );
(*pTypes)[7] = CPPU_TYPE_REF( XVetoableChangeListener );
(*pTypes)[8] = CPPU_TYPE_REF( XResultSet );
(*pTypes)[9] = CPPU_TYPE_REF( XContentAccess );
(*pTypes)[10] = CPPU_TYPE_REF( XRow );
(*pTypes)[11] = CPPU_TYPE_REF( XFetchProvider );
(*pTypes)[12] = CPPU_TYPE_REF( XFetchProviderForContentAccess );
}
}
return *pTypes;
static Sequence<Type> ourTypes(
{ CPPU_TYPE_REF( XTypeProvider ),
CPPU_TYPE_REF( XServiceInfo ),
CPPU_TYPE_REF( XComponent ),
CPPU_TYPE_REF( XCloseable ),
CPPU_TYPE_REF( XResultSetMetaDataSupplier ),
CPPU_TYPE_REF( XPropertySet ),
CPPU_TYPE_REF( XPropertyChangeListener ),
CPPU_TYPE_REF( XVetoableChangeListener ),
CPPU_TYPE_REF( XResultSet ),
CPPU_TYPE_REF( XContentAccess ),
CPPU_TYPE_REF( XRow ),
CPPU_TYPE_REF( XFetchProvider ),
CPPU_TYPE_REF( XFetchProviderForContentAccess ) } );
return ourTypes;
}
......
......@@ -74,20 +74,11 @@ throw ()
css::uno::Sequence< css::uno::Type > SAL_CALL OTempFileService::getTypes( )
{
static ::cppu::OTypeCollection* pTypeCollection = nullptr;
if ( pTypeCollection == nullptr )
{
::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
if ( pTypeCollection == nullptr )
{
static ::cppu::OTypeCollection aTypeCollection(
static ::cppu::OTypeCollection ourTypeCollection(
cppu::UnoType<css::beans::XPropertySet>::get()
,OTempFileBase::getTypes() );
pTypeCollection = &aTypeCollection;
}
}
return pTypeCollection->getTypes();
return ourTypeCollection.getTypes();
};
// XTempFile
......
......@@ -83,15 +83,8 @@ XTYPEPROVIDER_COMMON_IMPL( Content );
// virtual
uno::Sequence< uno::Type > SAL_CALL Content::getTypes()
{
static cppu::OTypeCollection* pCollection = nullptr;
if ( !pCollection )
{
osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() );
if ( !pCollection )
{
static cppu::OTypeCollection aCollection(
CPPU_TYPE_REF( lang::XTypeProvider ),
static cppu::OTypeCollection ourTypeCollection(
CPPU_TYPE_REF( lang::XTypeProvider ),
CPPU_TYPE_REF( lang::XServiceInfo ),
CPPU_TYPE_REF( lang::XComponent ),
CPPU_TYPE_REF( ucb::XContent ),
......@@ -101,11 +94,8 @@ uno::Sequence< uno::Type > SAL_CALL Content::getTypes()
CPPU_TYPE_REF( beans::XPropertyContainer ),
CPPU_TYPE_REF( beans::XPropertySetInfoChangeNotifier ),
CPPU_TYPE_REF( container::XChild ) );
pCollection = &aCollection;
}
}
return (*pCollection).getTypes();
return ourTypeCollection.getTypes();
}
// XServiceInfo methods.
......
......@@ -90,23 +90,15 @@ css::uno::Sequence< sal_Int8 > SAL_CALL ContentProvider::getImplementationId()
css::uno::Sequence< css::uno::Type > SAL_CALL ContentProvider::getTypes()
{
static cppu::OTypeCollection* pCollection = nullptr;
if ( !pCollection )
{
osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
if ( !pCollection )
{
static cppu::OTypeCollection collection(
static cppu::OTypeCollection ourTypeCollection(
cppu::UnoType<lang::XTypeProvider>::get(),
cppu::UnoType<lang::XServiceInfo>::get(),
cppu::UnoType<ucb::XContentProvider>::get(),
cppu::UnoType<lang::XComponent>::get(),
cppu::UnoType<container::XContainerListener>::get()
);
pCollection = &collection;
}
}
return (*pCollection).getTypes();
return ourTypeCollection.getTypes();
}
......
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