Kaydet (Commit) 723e74b5 authored tarafından Caolán McNamara's avatar Caolán McNamara

use rtl::Static where double-locked pattern used

üst 3dfc2de7
......@@ -154,7 +154,7 @@ namespace comphelper
private:
COMPHELPER_DLLPRIVATE static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelImplementationId();
COMPHELPER_DLLPRIVATE static const ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId();
};
//.........................................................................
......
......@@ -121,21 +121,13 @@ namespace comphelper
return ( NULL != pImplementation );
}
namespace { struct lcl_ImplId : public rtl::Static< ::cppu::OImplementationId, lcl_ImplId > {}; }
//---------------------------------------------------------------------
const Sequence< sal_Int8 >& OAccessibleImplementationAccess::getUnoTunnelImplementationId()
{
static Sequence< sal_Int8 > aId;
if ( !aId.getLength() )
{
::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
if ( !aId.getLength() )
const Sequence< sal_Int8 > OAccessibleImplementationAccess::getUnoTunnelImplementationId()
{
static ::cppu::OImplementationId aImplId;
// unfortunately, the OImplementationId::getImplementationId returns a copy, not a static reference ...
aId = aImplId.getImplementationId();
}
}
return aId;
::cppu::OImplementationId &rID = lcl_ImplId::get();
return rID.getImplementationId();
}
//---------------------------------------------------------------------
......
......@@ -30,6 +30,8 @@
#include "comphelper_module.hxx"
#include <rtl/instance.hxx>
//--------------------------------------------------------------------
extern void createRegistryInfo_OPropertyBag();
extern void createRegistryInfo_SequenceOutputStream();
......@@ -49,13 +51,12 @@ namespace comphelper { namespace module
{
//........................................................................
static void initializeModule()
namespace
{
static bool bInitialized( false );
if ( !bInitialized )
class doInitialize
{
::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
if ( !bInitialized )
public:
doInitialize()
{
createRegistryInfo_OPropertyBag();
createRegistryInfo_SequenceOutputStream();
......@@ -70,7 +71,14 @@ namespace comphelper { namespace module
createRegistryInfo_OSimpleLogRing();
createRegistryInfo_OOfficeRestartManager();
}
};
struct theInitializer : public rtl::Static< doInitialize, theInitializer > {};
}
static void initializeModule()
{
theInitializer::get();
}
//........................................................................
......
......@@ -32,6 +32,7 @@
#include <com/sun/star/uno/genfunc.h>
#include <cppuhelper/queryinterface.hxx>
#include <comphelper/sequence.hxx>
#include <rtl/instance.hxx>
//.........................................................................
namespace comphelper
......@@ -217,20 +218,13 @@ namespace comphelper
);
}
namespace { struct lcl_ImplId : public rtl::Static< ::cppu::OImplementationId, lcl_ImplId > {}; }
//---------------------------------------------------------------------
Sequence< sal_Int8 > SAL_CALL OStatefulPropertySet::getImplementationId() throw(RuntimeException)
{
static ::cppu::OImplementationId * pId = NULL;
if ( !pId )
{
::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
if ( !pId )
{
static ::cppu::OImplementationId aId;
pId = &aId;
}
}
return pId->getImplementationId();
::cppu::OImplementationId &rID = lcl_ImplId::get();
return rID.getImplementationId();
}
//---------------------------------------------------------------------
......
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