summaryrefslogtreecommitdiff
path: root/vcl/unx
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2008-07-25 08:12:25 +0000
committerOliver Bolte <obo@openoffice.org>2008-07-25 08:12:25 +0000
commit2d5590d307592afda49bb644c8db9c29403fd673 (patch)
tree3159fad9044a775942eb41b6d73e0f0d69b6b515 /vcl/unx
parent6d44a14a9bbccc2ddf83ae314a32efe7ac11df8b (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.cxx35
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