summaryrefslogtreecommitdiff
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
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
-rw-r--r--firefox.spec8
-rw-r--r--mozilla-1234026.patch57
2 files changed, 64 insertions, 1 deletions
diff --git a/firefox.spec b/firefox.spec
index 15e9400..311cdbc 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -77,7 +77,7 @@
Summary: Mozilla Firefox Web browser
Name: firefox
Version: 43.0.3
-Release: 3%{?pre_tag}%{?dist}
+Release: 4%{?pre_tag}%{?dist}
URL: http://www.mozilla.org/projects/firefox/
License: MPLv1.1 or GPLv2+ or LGPLv2+
Group: Applications/Internet
@@ -116,6 +116,7 @@ Patch221: firefox-fedora-ua.patch
Patch222: firefox-gtk3-20.patch
# Upstream patches
+Patch300: mozilla-1234026.patch
# Gtk3 upstream patches
@@ -262,6 +263,8 @@ cd %{tarballdir}
%patch222 -p1 -b .gtk3-20
%endif
+%patch300 -p1 -b .1234026
+
%patch500 -p1
%patch501 -p1
@@ -756,6 +759,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
#---------------------------------------------------------------------
%changelog
+* Thu Jan 7 2016 Martin Stransky <stransky@redhat.com> - 43.0.3-4
+- Added fix for mozbz#1234026 - crashes on XWayland
+
* Tue Jan 05 2016 Marcin Juszkiewicz <mjuszkiewicz@redhat.com> - 43.0.3-3
- Fix build on AArch64.
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