summaryrefslogtreecommitdiff
path: root/mozilla-1234026.patch
diff options
context:
space:
mode:
authorMartin Stransky <stransky@redhat.com>2016-01-07 12:56:07 +0100
committerMartin Stransky <stransky@redhat.com>2016-01-07 12:56:07 +0100
commit9638b52090f3e0c478a530590e3fe0c8701b887c (patch)
tree9b939b625239fcbb0b9320303a332a958c56f42e /mozilla-1234026.patch
parentFix build on AArch64 (diff)
downloadlibrewolf-fedora-ff-9638b52090f3e0c478a530590e3fe0c8701b887c.tar.gz
librewolf-fedora-ff-9638b52090f3e0c478a530590e3fe0c8701b887c.tar.bz2
librewolf-fedora-ff-9638b52090f3e0c478a530590e3fe0c8701b887c.zip
Added fix for mozbz#1234026 - crashes on XWayland
Diffstat (limited to 'mozilla-1234026.patch')
-rw-r--r--mozilla-1234026.patch57
1 files changed, 57 insertions, 0 deletions
diff --git a/mozilla-1234026.patch b/mozilla-1234026.patch
new file mode 100644
index 0000000..0882862
--- /dev/null
+++ b/mozilla-1234026.patch
@@ -0,0 +1,57 @@
+From 01c739425470990efd607fdf57c9b24033c71300 Mon Sep 17 00:00:00 2001
+From: Mike Hommey <mh+mozilla@glandium.org>
+Date: Wed, 23 Dec 2015 12:11:45 +0900
+Subject: [PATCH] Bug 1234026 - Pass a --display option to gtk_init in content
+ processes
+
+---
+ dom/ipc/ContentChild.cpp | 23 ++++++++++++++++++++++-
+ 1 file changed, 22 insertions(+), 1 deletion(-)
+
+diff --git a/dom/ipc/ContentChild.cpp b/dom/ipc/ContentChild.cpp
+index 14a7302..cfec4b7 100644
+--- a/dom/ipc/ContentChild.cpp
++++ b/dom/ipc/ContentChild.cpp
+@@ -615,17 +615,38 @@ NS_INTERFACE_MAP_BEGIN(ContentChild)
+ NS_INTERFACE_MAP_END
+
+ bool
+ ContentChild::Init(MessageLoop* aIOLoop,
+ base::ProcessId aParentPid,
+ IPC::Channel* aChannel)
+ {
+ #ifdef MOZ_WIDGET_GTK
+- gtk_init(nullptr, nullptr);
++ // We need to pass a display down to gtk_init because it's not going to
++ // use the one from the environment on its own when deciding which backend
++ // to use, and when starting under XWayland, it may choose to start with
++ // the wayland backend instead of the x11 backend.
++ // We could use gdk_display_open, and gdk_display_manager_set_default_display
++ // but then we'd have to hold onto it and gdk_display_close it at the
++ // right moment, so it's simpler to just pass down a fake argv list.
++ // The DISPLAY environment variable is normally set by the parent process.
++ const char *display_name = PR_GetEnv("DISPLAY");
++ if (display_name) {
++ int argc = 3;
++ const char *argv[] = {
++ nullptr,
++ "--display",
++ display_name,
++ nullptr
++ };
++ char** argv_ = const_cast<char**>(argv);
++ gtk_init(&argc, &argv_);
++ } else {
++ gtk_init(nullptr, nullptr);
++ }
+ #endif
+
+ #ifdef MOZ_WIDGET_QT
+ // sigh, seriously
+ nsQAppInstance::AddRef();
+ #endif
+
+ #ifdef MOZ_X11
+--
+2.6.1
+
bgstack15