1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
commit 4b5b332
Author: Mike Hommey <mh+mozilla@glandium.org>
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
--- mozilla/accessible/atk/Platform.cpp
+++ mozilla/accessible/atk/Platform.cpp
@@ -18,8 +18,9 @@
#include <dbus/dbus.h>
#endif
#include <gtk/gtk.h>
+
#if (MOZ_WIDGET_GTK == 3)
-#include <atk-bridge.h>
+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
--- mozilla/config/system-headers
+++ mozilla/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
--- mozilla/configure.in
+++ mozilla/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
|