diff options
author | Oliver Bolte <obo@openoffice.org> | 2008-07-25 08:12:25 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2008-07-25 08:12:25 +0000 |
commit | 2d5590d307592afda49bb644c8db9c29403fd673 (patch) | |
tree | 3159fad9044a775942eb41b6d73e0f0d69b6b515 /vcl/unx | |
parent | 6d44a14a9bbccc2ddf83ae314a32efe7ac11df8b (diff) |
INTEGRATION: CWS aqua11y02 (1.26.34); FILE MERGED
2008/07/11 09:02:20 obr 1.26.34.3: RESYNC: (1.27-1.28); FILE MERGED
2008/06/18 18:04:39 fne 1.26.34.2: RESYNC: (1.26-1.27); FILE MERGED
2008/06/06 10:19:20 obr 1.26.34.1: #i85292# wrapper now cache the name, suppress unload of gtk plugin when atk-bridge module gets loaded as the shutdown symbol is no longer in global address space
Diffstat (limited to 'vcl/unx')
-rw-r--r-- | vcl/unx/source/plugadapt/salplug.cxx | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/vcl/unx/source/plugadapt/salplug.cxx b/vcl/unx/source/plugadapt/salplug.cxx index 97b394175ded..a5b83593ad25 100644 --- a/vcl/unx/source/plugadapt/salplug.cxx +++ b/vcl/unx/source/plugadapt/salplug.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: salplug.cxx,v $ - * $Revision: 1.28 $ + * $Revision: 1.29 $ * * This file is part of OpenOffice.org. * @@ -31,15 +31,10 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_vcl.hxx" -#ifndef OSL_MODULE_H #include <osl/module.h> -#endif -#ifndef OSL_PROCESS_H #include <osl/process.h> -#endif -#ifndef RTL_STRING_HXX + #include <rtl/ustrbuf.hxx> -#endif #include <svunx.h> #include <prex.h> @@ -97,6 +92,32 @@ static SalInstance* tryInstance( const OUString& rModuleBase ) if( pInst ) { pCloseModule = aMod; + + /* + * Recent GTK+ versions load their modules with RTLD_LOCAL, so we can + * not access the 'gnome_accessibility_module_shutdown' anymore. + * So make sure libgtk+ & co are still mapped into memory when + * atk-bridge's atexit handler gets called. + */ + if( rModuleBase.equalsAscii("gtk") ) + { + const char* gtk_modules = getenv( "GTK_MODULES" ); + if( gtk_modules ) + { + rtl::OString aModules( gtk_modules ); + sal_Int32 nIndex = 0; + while( nIndex >= 0 ) + { + rtl::OString aToken = aModules.getToken( 0, ':', nIndex ); + if( aToken.equals( "atk-bridge" ) ) + { + pCloseModule = NULL; + break; + } + } + } + } + GetSalData()->m_pPlugin = aMod; } else |