commit 4b5b332 Author: Mike Hommey Date: Tue Mar 3 18:41:13 2015 +0900 Bug 1138845 - Don't require atk-bridge for gtk+3 builds. r=tbsaunde --- accessible/atk/Platform.cpp | 29 +++++++++++++++++++---------- config/system-headers | 1 - configure.in | 2 +- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git accessible/atk/Platform.cpp accessible/atk/Platform.cpp index a2afd96..2ed5e0b 100644 --- accessible/atk/Platform.cpp +++ accessible/atk/Platform.cpp @@ -18,8 +18,9 @@ #include #endif #include + #if (MOZ_WIDGET_GTK == 3) -#include +extern "C" __attribute__((weak,visibility("default"))) int atk_bridge_adaptor_init(int*, char **[]); #endif using namespace mozilla; @@ -46,7 +47,6 @@ static gulong sToplevel_hide_hook = 0; GType g_atk_hyperlink_impl_type = G_TYPE_INVALID; -#if (MOZ_WIDGET_GTK == 2) struct GnomeAccessibilityModule { const char *libName; @@ -67,11 +67,13 @@ static GnomeAccessibilityModule sAtkBridge = { "gnome_accessibility_module_shutdown", nullptr }; +#if (MOZ_WIDGET_GTK == 2) static GnomeAccessibilityModule sGail = { "libgail.so", nullptr, "gnome_accessibility_module_init", nullptr, "gnome_accessibility_module_shutdown", nullptr }; +#endif static nsresult LoadGtkModule(GnomeAccessibilityModule& aModule) @@ -98,7 +100,11 @@ LoadGtkModule(GnomeAccessibilityModule& aModule) else subLen = loc2 - loc1; nsAutoCString sub(Substring(libPath, loc1, subLen)); +#if (MOZ_WIDGET_GTK == 2) sub.AppendLiteral("/gtk-2.0/modules/"); +#else + sub.AppendLiteral("/gtk-3.0/modules/"); +#endif sub.Append(aModule.libName); aModule.lib = PR_LoadLibrary(sub.get()); if (aModule.lib) @@ -123,7 +129,6 @@ LoadGtkModule(GnomeAccessibilityModule& aModule) } return NS_OK; } -#endif // (MOZ_WIDGET_GTK == 2) void a11y::PlatformInit() @@ -175,14 +180,17 @@ a11y::PlatformInit() // Init atk-bridge now PR_SetEnv("NO_AT_BRIDGE=0"); -#if (MOZ_WIDGET_GTK == 2) - rv = LoadGtkModule(sAtkBridge); - if (NS_SUCCEEDED(rv)) { - (*sAtkBridge.init)(); - } -#else - atk_bridge_adaptor_init(nullptr, nullptr); +#if (MOZ_WIDGET_GTK == 3) + if (atk_bridge_adaptor_init) { + atk_bridge_adaptor_init(nullptr, nullptr); + } else #endif + { + nsresult rv = LoadGtkModule(sAtkBridge); + if (NS_SUCCEEDED(rv)) { + (*sAtkBridge.init)(); + } + } if (!sToplevel_event_hook_added) { sToplevel_event_hook_added = true; @@ -210,7 +218,6 @@ a11y::PlatformShutdown() sToplevel_hide_hook); } -#if (MOZ_WIDGET_GTK == 2) if (sAtkBridge.lib) { // Do not shutdown/unload atk-bridge, // an exit function registered will take care of it @@ -221,6 +228,7 @@ a11y::PlatformShutdown() sAtkBridge.init = nullptr; sAtkBridge.shutdown = nullptr; } +#if (MOZ_WIDGET_GTK == 2) if (sGail.lib) { // Do not shutdown gail because // 1) Maybe it's not init-ed by us. e.g. GtkEmbed diff --git config/system-headers config/system-headers index 2c94a7d..cf01775 100644 --- config/system-headers +++ config/system-headers @@ -189,7 +189,6 @@ asm/signal.h ASRegistry.h assert.h atk/atk.h -atk-bridge.h atlcom.h atlconv.h atlctl.cpp diff --git configure.in configure.in index 0bd1eb7..f3b3365 100644 --- configure.in +++ configure.in @@ -4408,7 +4408,7 @@ fi if test "$COMPILE_ENVIRONMENT"; then if test "$MOZ_ENABLE_GTK3"; then - PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 atk-bridge-2.0 $GDK_PACKAGES) + PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES) MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS" dnl Contrary to MOZ_GTK2_LIBS, MOZ_GTK3_LIBS needs to be literally added to TK_LIBS instead dnl of a make reference because of how TK_LIBS is mangled in toolkit/library/moz.build