Fix crash when e10s is disabled and default wl_queue is processed.

This commit is contained in:
Martin Stransky 2018-02-02 16:49:59 +01:00
parent 3a43e3daba
commit 00a8463181
2 changed files with 32 additions and 1 deletions

View File

@ -98,7 +98,7 @@ ExclusiveArch: x86_64 i686
Summary: Mozilla Firefox Web browser
Name: firefox
Version: 59.0
Release: 0.7%{?pre_tag}%{?dist}
Release: 0.8%{?pre_tag}%{?dist}
URL: https://www.mozilla.org/firefox/
License: MPLv1.1 or GPLv2+ or LGPLv2+
#Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz
@ -164,6 +164,7 @@ Patch453: mozilla-1433081.patch
Patch454: remote-profile.patch
Patch455: mozilla-1434572.patch
Patch456: mozilla-1434565.patch
Patch457: queue-crash.patch
# Debian patches
Patch500: mozilla-440908.patch
@ -335,6 +336,7 @@ This package contains results of tests executed during build.
%patch454 -p1 -b .remote-profile
%patch455 -p1 -b .1434572
%patch456 -p1 -b .1434565
%patch457 -p1 -b .queue-crash
# Patch for big endian platforms only
%if 0%{?big_endian}
@ -868,6 +870,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
#---------------------------------------------------------------------
%changelog
* Fri Feb 2 2018 Martin Stransky <stransky@redhat.com> - 59.0-0.8
- Fix crash when e10s is disabled and default wl_queue is processed.
* Fri Feb 2 2018 Martin Stransky <stransky@redhat.com> - 59.0-0.7
- Fixed Firefox X11 desktop file launcher.

26
queue-crash.patch Normal file
View File

@ -0,0 +1,26 @@
diff --git a/widget/gtk/WindowSurfaceWayland.cpp b/widget/gtk/WindowSurfaceWayland.cpp
--- a/widget/gtk/WindowSurfaceWayland.cpp
+++ b/widget/gtk/WindowSurfaceWayland.cpp
@@ -268,17 +268,21 @@ nsWaylandDisplay::GetShm()
if (!mShm) {
// wl_shm is not provided by Gtk so we need to query wayland directly
// See weston/simple-shm.c and create_display() for reference.
wl_registry* registry = wl_display_get_registry(mDisplay);
wl_registry_add_listener(registry, &registry_listener, this);
wl_proxy_set_queue((struct wl_proxy *)registry, mEventQueue);
- wl_display_roundtrip_queue(mDisplay, mEventQueue);
+ if (mEventQueue) {
+ wl_display_roundtrip_queue(mDisplay, mEventQueue);
+ } else {
+ wl_display_roundtrip(mDisplay);
+ }
MOZ_RELEASE_ASSERT(mShm, "Wayland registry query failed!");
}
return(mShm);
}
bool