summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2014-04-19 10:29:33 +0300
committerTor Lillqvist <tml@collabora.com>2014-04-19 10:29:33 +0300
commitb1b11e3272b6205f60597a6129084f4f3e130ce1 (patch)
tree5ea816953b55826952c4aa36d5db357cc139cd08
parentc654ff404229ebb76c1e0c11d7fca6d931a9873f (diff)
If it has been "not recommended currently" since 2007 it can go away
Change-Id: I03f2822f1bad8f5d4128c5b0bd7e26b7ab968815
-rw-r--r--svtools/source/misc/svtaccessiblefactory.cxx102
1 files changed, 25 insertions, 77 deletions
diff --git a/svtools/source/misc/svtaccessiblefactory.cxx b/svtools/source/misc/svtaccessiblefactory.cxx
index 5d94977f635b..431ecec4944f 100644
--- a/svtools/source/misc/svtaccessiblefactory.cxx
+++ b/svtools/source/misc/svtaccessiblefactory.cxx
@@ -24,21 +24,6 @@
#include <boost/noncopyable.hpp>
#include <osl/module.h>
-// #define UNLOAD_ON_LAST_CLIENT_DYING
- // this is not recommended currently. If enabled, the implementation will log
- // the number of active clients, and unload the acc library when the last client
- // goes away.
- // Sounds like a good idea, unfortunately, there's no guarantee that all objects
- // implemented in this library are already dead.
- // Iow, just because an object implementing an XAccessible (implemented in this lib
- // here) died, it's not said that everybody released all references to the
- // XAccessibleContext used by this component, and implemented in the acc lib.
- // So we cannot really unload the lib.
-
- // Alternatively, if the lib would us own "usage counting", i.e. every component
- // implemented therein would affect a static ref count, the acc lib could care
- // for unloading itself.
-
namespace svt
{
using namespace ::com::sun::star::uno;
@@ -47,9 +32,6 @@ namespace svt
namespace
{
-#ifdef UNLOAD_ON_LAST_CLIENT_DYING
- static oslInterlockedCount s_nAccessibleFactoryAccesss = 0;
-#endif
#ifndef DISABLE_DYNLOADING
static oslModule s_hAccessibleImplementationModule = NULL;
#endif
@@ -273,79 +255,46 @@ namespace svt
::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
-#ifdef UNLOAD_ON_LAST_CLIENT_DYING
- if ( 1 == osl_atomic_increment( &s_nAccessibleFactoryAccesss ) )
- { // the first client
-#endif // UNLOAD_ON_LAST_CLIENT_DYING
-
#if HAVE_FEATURE_DESKTOP
- // load the library implementing the factory
- if ( !s_pFactory.get() )
- {
+ // load the library implementing the factory
+ if ( !s_pFactory.get() )
+ {
#ifndef DISABLE_DYNLOADING
- const OUString sModuleName( SVLIBRARY( "acc" ));
- s_hAccessibleImplementationModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, 0 );
- if ( s_hAccessibleImplementationModule != NULL )
- {
- const OUString sFactoryCreationFunc( "getSvtAccessibilityComponentFactory" );
- s_pAccessibleFactoryFunc = (GetSvtAccessibilityComponentFactory)
- osl_getFunctionSymbol( s_hAccessibleImplementationModule, sFactoryCreationFunc.pData );
+ const OUString sModuleName( SVLIBRARY( "acc" ));
+ s_hAccessibleImplementationModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, 0 );
+ if ( s_hAccessibleImplementationModule != NULL )
+ {
+ const OUString sFactoryCreationFunc( "getSvtAccessibilityComponentFactory" );
+ s_pAccessibleFactoryFunc = (GetSvtAccessibilityComponentFactory)
+ osl_getFunctionSymbol( s_hAccessibleImplementationModule, sFactoryCreationFunc.pData );
- }
- OSL_ENSURE( s_pAccessibleFactoryFunc, "ac_registerClient: could not load the library, or not retrieve the needed symbol!" );
+ }
+ OSL_ENSURE( s_pAccessibleFactoryFunc, "ac_registerClient: could not load the library, or not retrieve the needed symbol!" );
#else
- s_pAccessibleFactoryFunc = getSvtAccessibilityComponentFactory;
+ s_pAccessibleFactoryFunc = getSvtAccessibilityComponentFactory;
#endif // DISABLE_DYNLOADING
- // get a factory instance
- if ( s_pAccessibleFactoryFunc )
+ // get a factory instance
+ if ( s_pAccessibleFactoryFunc )
+ {
+ IAccessibleFactory* pFactory = static_cast< IAccessibleFactory* >( (*s_pAccessibleFactoryFunc)() );
+ if ( pFactory )
{
- IAccessibleFactory* pFactory = static_cast< IAccessibleFactory* >( (*s_pAccessibleFactoryFunc)() );
- if ( pFactory )
- {
- s_pFactory = pFactory;
- pFactory->release();
- }
+ s_pFactory = pFactory;
+ pFactory->release();
}
}
+ }
#endif // HAVE_FEATURE_DESKTOP
- if ( !s_pFactory.get() )
- // the attempt to load the lib, or to create the factory, failed
- // -> fall back to a dummy factory
- s_pFactory = new AccessibleDummyFactory;
-#ifdef UNLOAD_ON_LAST_CLIENT_DYING
- }
-#endif
+ if ( !s_pFactory.get() )
+ // the attempt to load the lib, or to create the factory, failed
+ // -> fall back to a dummy factory
+ s_pFactory = new AccessibleDummyFactory;
m_bInitialized = true;
}
-
- AccessibleFactoryAccess::~AccessibleFactoryAccess()
- {
- if ( m_bInitialized )
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
-
-#ifdef UNLOAD_ON_LAST_CLIENT_DYING
- if( 0 == osl_atomic_decrement( &s_nAccessibleFactoryAccesss ) )
- {
- s_pFactory = NULL;
-#if HAVE_FEATURE_DESKTOP
- s_pAccessibleFactoryFunc = NULL;
-#endif
- if ( s_hAccessibleImplementationModule )
- {
- osl_unloadModule( s_hAccessibleImplementationModule );
- s_hAccessibleImplementationModule = NULL;
- }
- }
-#endif // UNLOAD_ON_LAST_CLIENT_DYING
- }
- }
-
-
IAccessibleFactory& AccessibleFactoryAccess::getFactory()
{
ensureInitialized();
@@ -356,5 +305,4 @@ namespace svt
} // namespace svt
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */