summaryrefslogtreecommitdiff
path: root/toolkit
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2014-04-19 10:55:31 +0300
committerTor Lillqvist <tml@collabora.com>2014-04-19 10:55:31 +0300
commit6a579871d93c05630986f7d67bd670287ceba6de (patch)
tree0c01e7f449400da98eedfe40ce0b7a705280e48c /toolkit
parent652ef6e3131358e9d83dc45d2cbd90bf207a3aaf (diff)
If it has been "not recommended currently" since 2007, it can go away
Change-Id: If60f51d57e2a2e980307c7a11caa39988aaaa9b4
Diffstat (limited to 'toolkit')
-rw-r--r--toolkit/source/helper/accessibilityclient.cxx108
1 files changed, 27 insertions, 81 deletions
diff --git a/toolkit/source/helper/accessibilityclient.cxx b/toolkit/source/helper/accessibilityclient.cxx
index 7364a5b09b5a..3db9a72a1b38 100644
--- a/toolkit/source/helper/accessibilityclient.cxx
+++ b/toolkit/source/helper/accessibilityclient.cxx
@@ -29,34 +29,13 @@
#include <osl/diagnose.h>
#include <tools/solar.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 toolkit
{
-
-
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::accessibility;
namespace
{
-#ifdef UNLOAD_ON_LAST_CLIENT_DYING
- static oslInterlockedCount s_nAccessibilityClients = 0;
-#endif // UNLOAD_ON_LAST_CLIENT_DYING
#ifndef DISABLE_DYNLOADING
static oslModule s_hAccessibleImplementationModule = NULL;
#endif
@@ -201,81 +180,48 @@ namespace toolkit
::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
-#ifdef UNLOAD_ON_LAST_CLIENT_DYING
- if ( 1 == osl_atomic_increment( &s_nAccessibilityClients ) )
- { // 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 =
- OUString("getStandardAccessibleFactory");
- s_pAccessibleFactoryFunc = (GetStandardAccComponentFactory)
- 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 =
+ OUString("getStandardAccessibleFactory");
+ s_pAccessibleFactoryFunc = (GetStandardAccComponentFactory)
+ osl_getFunctionSymbol( s_hAccessibleImplementationModule, sFactoryCreationFunc.pData );
- }
- OSL_ENSURE( s_pAccessibleFactoryFunc, "AccessibilityClient::ensureInitialized: could not load the library, or not retrieve the needed symbol!" );
+ }
+ OSL_ENSURE( s_pAccessibleFactoryFunc, "AccessibilityClient::ensureInitialized: could not load the library, or not retrieve the needed symbol!" );
#else
- s_pAccessibleFactoryFunc = getStandardAccessibleFactory;
+ s_pAccessibleFactoryFunc = getStandardAccessibleFactory;
#endif // DISABLE_DYNLOADING
- // get a factory instance
- if ( s_pAccessibleFactoryFunc )
+ // get a factory instance
+ if ( s_pAccessibleFactoryFunc )
+ {
+ IAccessibleFactory* pFactory = static_cast< IAccessibleFactory* >( (*s_pAccessibleFactoryFunc)() );
+ OSL_ENSURE( pFactory, "AccessibilityClient::ensureInitialized: no factory provided by the A11Y lib!" );
+ if ( pFactory )
{
- IAccessibleFactory* pFactory = static_cast< IAccessibleFactory* >( (*s_pAccessibleFactoryFunc)() );
- OSL_ENSURE( pFactory, "AccessibilityClient::ensureInitialized: no factory provided by the A11Y lib!" );
- 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;
}
-
- AccessibilityClient::~AccessibilityClient()
- {
- if ( m_bInitialized )
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
-
-#ifdef UNLOAD_ON_LAST_CLIENT_DYING
- if( 0 == osl_atomic_decrement( &s_nAccessibilityClients ) )
- {
- 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& AccessibilityClient::getFactory()
{
ensureInitialized();