diff options
-rw-r--r-- | comphelper/source/processfactory/processfactory.cxx | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/comphelper/source/processfactory/processfactory.cxx b/comphelper/source/processfactory/processfactory.cxx index 720ec6e0fb67..31a2e7adfe05 100644 --- a/comphelper/source/processfactory/processfactory.cxx +++ b/comphelper/source/processfactory/processfactory.cxx @@ -33,32 +33,44 @@ using namespace osl; namespace comphelper { -/* - This function preserves only that the xProcessFactory variable will not be create when - the library is loaded. -*/ -static Reference< XMultiServiceFactory > localProcessFactory( const Reference< XMultiServiceFactory >& xSMgr, bool bSet ) -{ - Guard< Mutex > aGuard( Mutex::getGlobalMutex() ); +namespace { - static Reference< XMultiServiceFactory > xProcessFactory; - if ( bSet ) +class LocalProcessFactory { +public: + void set( const Reference< XMultiServiceFactory >& xSMgr ) { + Guard< Mutex > aGuard( Mutex::getGlobalMutex() ); + xProcessFactory = xSMgr; } - return xProcessFactory; -} + Reference< XMultiServiceFactory > get() + { + Guard< Mutex > aGuard( Mutex::getGlobalMutex() ); + return xProcessFactory; + } + +private: + Reference< XMultiServiceFactory > xProcessFactory; +}; + +/* + This var preserves only that the above xProcessFactory variable will not be create when + the library is loaded. +*/ +LocalProcessFactory localProcessFactory; + +} void setProcessServiceFactory(const Reference< XMultiServiceFactory >& xSMgr) { - localProcessFactory( xSMgr, true ); + localProcessFactory.set( xSMgr ); } Reference< XMultiServiceFactory > getProcessServiceFactory() { - Reference< XMultiServiceFactory> xReturn = localProcessFactory( xReturn, false ); + Reference< XMultiServiceFactory> xReturn = localProcessFactory.get(); if ( !xReturn.is() ) { throw DeploymentException( "null process service factory" ); |