summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--build-disable-elfhack.patch16
-rw-r--r--firefox.spec531
-rw-r--r--mozilla-1170092.patch43
-rw-r--r--mozilla-1444437.patch183
-rw-r--r--mozilla-1467128.patch352
-rw-r--r--mozilla-wayland-trunk.patch519
-rw-r--r--rb244676.patch27
-rw-r--r--rb246462.patch80
-rw-r--r--sources4
10 files changed, 41 insertions, 1716 deletions
diff --git a/.gitignore b/.gitignore
index d8680cd..f068c63 100644
--- a/.gitignore
+++ b/.gitignore
@@ -312,3 +312,5 @@ firefox-3.6.4.source.tar.bz2
/firefox-langpacks-62.0.2-20180924.tar.xz
/firefox-62.0.3.source.tar.xz
/firefox-langpacks-62.0.3-20181002.tar.xz
+/firefox-63.0.source.tar.xz
+/firefox-langpacks-63.0-20181018.tar.xz
diff --git a/build-disable-elfhack.patch b/build-disable-elfhack.patch
index 11e6a54..172ecf0 100644
--- a/build-disable-elfhack.patch
+++ b/build-disable-elfhack.patch
@@ -1,12 +1,12 @@
-diff -up firefox-62.0.2/toolkit/moz.configure.elfhack firefox-62.0.2/toolkit/moz.configure
---- firefox-62.0.2/toolkit/moz.configure.elfhack 2018-09-27 14:32:56.549507561 +0200
-+++ firefox-62.0.2/toolkit/moz.configure 2018-09-27 14:33:08.219532121 +0200
-@@ -1195,7 +1195,7 @@ with only_when(has_elfhack):
- option('--disable-elf-hack', help='Disable elf hacks')
+diff -up firefox-63.0/toolkit/moz.configure.disable-elfhack firefox-63.0/toolkit/moz.configure
+--- firefox-63.0/toolkit/moz.configure.disable-elfhack 2018-10-18 13:35:35.870039190 +0200
++++ firefox-63.0/toolkit/moz.configure 2018-10-18 13:36:41.682515492 +0200
+@@ -1010,7 +1010,7 @@ with only_when('--enable-compile-environ
+ help='Disable elf hacks')
- set_config('USE_ELF_HACK',
-- depends_if('--enable-elf-hack')(lambda _: True))
-+ depends_if('--enable-elf-hack')(lambda _: False))
+ set_config('USE_ELF_HACK',
+- depends_if('--enable-elf-hack')(lambda _: True))
++ depends_if('--enable-elf-hack')(lambda _: False))
@depends(check_build_environment)
diff --git a/firefox.spec b/firefox.spec
index e749f14..210d939 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -100,13 +100,13 @@
Summary: Mozilla Firefox Web browser
Name: firefox
-Version: 62.0.3
-Release: 4%{?pre_tag}%{?dist}
+Version: 63.0
+Release: 1%{?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
%if %{with langpacks}
-Source1: firefox-langpacks-%{version}%{?pre_version}-20181002.tar.xz
+Source1: firefox-langpacks-%{version}%{?pre_version}-20181018.tar.xz
%endif
Source10: firefox-mozconfig
Source12: firefox-redhat-default-prefs.js
@@ -157,16 +157,11 @@ Patch414: mozilla-1435212-ffmpeg-4.0.patch
Patch415: Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch
Patch416: mozilla-1424422.patch
Patch417: bug1375074-save-restore-x28.patch
-Patch419: rb244676.patch
-Patch420: rb246462.patch
Patch421: mozilla-1447775.patch
# Wayland specific upstream patches
-Patch572: mozilla-1467128.patch
Patch573: mozilla-1415078.patch
Patch574: firefox-pipewire.patch
-Patch577: mozilla-1444437.patch
-Patch580: mozilla-wayland-trunk.patch
Patch581: mozilla-1493081.patch
# Debian patches
@@ -357,8 +352,6 @@ This package contains results of tests executed during build.
%ifarch %{arm}
%patch415 -p1 -b .1238661
%endif
-%patch419 -p1 -b .rb244676
-%patch420 -p1 -b .rb246462
# Patch for big endian platforms only
%if 0%{?big_endian}
%patch26 -p1 -b .icu
@@ -366,13 +359,10 @@ This package contains results of tests executed during build.
%patch421 -p1 -b .1447775
# Wayland specific upstream patches
-%patch572 -p1 -b .1467128
%patch573 -p1 -b .1415078
%if 0%{?fedora} > 27
%patch574 -p1 -b .firefox-pipewire
%endif
-%patch577 -p1 -b .1444437
-%patch580 -p1 -b .mozilla-wayland-trunk
%patch581 -p1 -b .mozilla-1493081
%{__rm} -f .mozconfig
@@ -897,6 +887,10 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
#---------------------------------------------------------------------
%changelog
+* Thu Oct 18 2018 Martin Stransky <stransky@redhat.com> - 63.0-1
+- Updated to latest upstream (63.0)
+- Updated PipeWire patch
+
* Tue Oct 9 2018 Martin Stransky <stransky@redhat.com> - 62.0.3-4
- Added fix for mozbz#1447775 - wrong dropspace sizing.
@@ -1023,514 +1017,3 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
* Tue Apr 24 2018 Martin Stransky <stransky@redhat.com> - 60.0-0.1
- Update to 60.0 Beta 15
-* Tue Mar 27 2018 Jan Horak <jhorak@redhat.com> - 59.0.2-1
-- Update to 59.0.2
-
-* Sat Mar 17 2018 Martin Stransky <stransky@redhat.com> - 59.0.1-1
-- Updated to 59.0.1
-
-* Wed Mar 14 2018 Martin Stransky <stransky@redhat.com> - 59.0-4
-- Fixed broken langpacks.
-
-* Tue Mar 13 2018 Martin Stransky <stransky@redhat.com> - 59.0-3
-- Enabled rendering to titlebar.
-
-* Mon Mar 12 2018 Martin Stransky <stransky@redhat.com> - 59.0-2
-- Updated to 59.0 build c61f5f5ead48c78a80c80db5c489bdc7cfaf8175
-
-* Tue Mar 6 2018 Martin Stransky <stransky@redhat.com> - 59.0-1
-- Updated to 59.0
-
-* Tue Feb 13 2018 Martin Stransky <stransky@redhat.com> - 58.0.1-3
-- Added build fix for gcc8 by Tom Callaway
-
-* Wed Jan 24 2018 Martin Stransky <stransky@redhat.com> - 58.0-4
-- Enabled second arches
-
-* Wed Jan 24 2018 Martin Stransky <stransky@redhat.com> - 58.0-3
-- Enabled titlebar/csd drawing patch again (mozbz#1399611).
-
-* Wed Jan 24 2018 Martin Stransky <stransky@redhat.com> - 58.0-2
-- Ship run-mozilla.sh script.
-
-* Tue Jan 23 2018 Martin Stransky <stransky@redhat.com> - 58.0-1
-- Update to 58.0
-
-* Tue Jan 9 2018 Martin Stransky <stransky@redhat.com> - 57.0.4-2
-- Try to disable rust debuginfo on arm to have arm builds again (rhbz#1523912)
-
-* Thu Jan 4 2018 Martin Stransky <stransky@redhat.com> - 57.0.4-1
-- Update to 57.0.4
-- Require nss 3.34 (rhbz#1531031)
-- Disabled ARM on all Fedoras due to rhbz#1523912
-
-* Tue Jan 2 2018 Jan Horak <jhorak@redhat.com> - 57.0.3-1
-- Exclude armv7hl due to OOM during build on koji
-- Update to 57.0.3
-
-* Fri Dec 08 2017 Kevin Fenzi <kevin@scrye.com> - 57.0.1-3
-- Temp disable armv7 for rawhide to get composes working again. rhbz#1523912
-
-* Mon Dec 4 2017 Martin Stransky <stransky@redhat.com> - 57.0.1-2
-- Added new man page by Tobias Girstmair (rhbz#1334025)
-
-* Thu Nov 30 2017 Jan Horak <jhorak@redhat.com> - 57.0.1-1
-- Update to 57.0.1
-
-* Wed Nov 22 2017 Martin Stransky <stransky@redhat.com> - 57.0-3
-- Enabled titlebar drawing for MATE
-- Fix for rhbz#1513968 - added missing u2f-hidraw-policy require
-
-* Mon Nov 13 2017 Martin Stransky <stransky@redhat.com> - 57.0-2
-- Updated to 57.0 RC4
-
-* Thu Nov 9 2017 Martin Stransky <stransky@redhat.com> - 57.0-1
-- Updated to 57.0
-
-* Mon Nov 6 2017 Martin Stransky <stransky@redhat.com> - 57.0-0.9
-- Updated to 57.0 Beta 14
-
-* Mon Oct 30 2017 Martin Stransky <stransky@redhat.com> - 57.0-0.8
-- Updated to 57.0 Beta 12
-
-* Tue Oct 24 2017 Kai Engert <kaie@redhat.com> - 57.0-0.7
-- Backport mozbz#730495 for rhbz#1496563
-
-* Tue Oct 24 2017 Martin Stransky <stransky@redhat.com> - 57.0-0.6
-- Updated to 57.0 Beta 11
-
-* Thu Oct 19 2017 Martin Stransky <stransky@redhat.com> - 57.0-0.5
-- Updated to 57.0 Beta 9
-
-* Mon Oct 16 2017 Martin Stransky <stransky@redhat.com> - 57.0-0.4
-- Updated to 57.0 Beta 8
-
-* Wed Oct 11 2017 Martin Stransky <stransky@redhat.com> - 57.0-0.3
-- Updated to 57.0 Beta 7
-
-* Mon Oct 9 2017 Martin Stransky <stransky@redhat.com> - 57.0-0.2
-- Updated to 57.0 Beta 6
-
-* Thu Oct 5 2017 Martin Stransky <stransky@redhat.com> - 57.0-0.1
-- Updated to 57.0 Beta 5
-- Added patch for mozbz#1399611 - CSD emulation
-
-* Wed Oct 4 2017 Martin Stransky <stransky@redhat.com> - 56.0-4
-- Fixed rhbz#1497932 - Plug-Ins for example flash fails
- because of unresolved symbols
-
-* Fri Sep 29 2017 Martin Stransky <stransky@redhat.com> - 56.0-3
-- Enabled second arches.
-
-* Mon Sep 25 2017 Martin Stransky <stransky@redhat.com> - 56.0-2
-- Update to 56.0 (B6)
-
-* Fri Sep 15 2017 Martin Stransky <stransky@redhat.com> - 55.0.3-4
-- Added switch to build mozbz#1399611 and disable it now
- for various regressions.
-
-* Thu Sep 14 2017 Martin Stransky <stransky@redhat.com> - 55.0.3-3
-- Added experimental patch for mozbz#1399611
-
-* Thu Sep 14 2017 Ville Skyttä <ville.skytta@iki.fi> - 55.0.3-2
-- Own the %%{_sysconfdir}/%%{name} dir
-
-* Fri Sep 1 2017 Jan Horak <jhorak@redhat.com> - 55.0.3-1
-- Update to 55.0.3
-
-* Thu Aug 24 2017 Martin Stransky <stransky@redhat.com> - 55.0.2-3
-- Enable to build with nspr-4.16.
-
-* Wed Aug 23 2017 Martin Stransky <stransky@redhat.com> - 55.0.2-2
-- Rebuilt to remove wrong dependency to nspr-4.16.
-
-* Fri Aug 18 2017 Martin Stransky <stransky@redhat.com> - 55.0.2-1
-- Updated to 55.0.2
-
-* Mon Aug 14 2017 Jan Horak <jhorak@redhat.com> - 55.0.1-1
-- Update to 55.0.1
-
-* Fri Aug 11 2017 Jan Horak <jhorak@redhat.com> - 55.0-6
-- Do not require nss and nspr which we build package against
-
-* Tue Aug 8 2017 Martin Stransky <stransky@redhat.com> - 55.0-5
-- Rebuild
-
-* Mon Aug 7 2017 Martin Stransky <stransky@redhat.com> - 55.0-2
-- Updated to 55.0 (B3)
-
-* Wed Aug 2 2017 Martin Stransky <stransky@redhat.com> - 55.0-1
-- Updated to 55.0 (B1)
-
-* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 54.0.1-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
-
-* Tue Jul 25 2017 Jan Horak <jhorak@redhat.com> - 54.0.1-1
-- Update to 54.0.1
-
-* Tue Jun 13 2017 Jan Horak <jhorak@redhat.com> - 54.0-2
-- Update to 54.0 (B3)
-
-* Thu Jun 8 2017 Jan Horak <jhorak@redhat.com> - 54.0-1
-- Update to 54.0
-
-* Wed May 31 2017 Jan Horak <jhorak@redhat.com> - 53.0.3-2
-- Added patch for big endian platforms
-- Do not restrict architectures in older Fedoras
-
-* Fri May 26 2017 Jan Horak <jhorak@redhat.com> - 53.0.3-1
-- Update to 53.0.3
-
-* Wed May 24 2017 Martin Stransky <stransky@redhat.com> - 53.0.2-8
-- Disabled Rust on ppc64 ppc64le s390x
-
-* Wed May 24 2017 Martin Stransky <stransky@redhat.com> - 53.0.2-7
-- Enabled aarch64 on all Fedoras
-- Enabled Rust on all arches
-
-* Wed May 24 2017 Martin Stransky <stransky@redhat.com> - 53.0.2-6
-- Added aarch64 patch (mozbz#1353817)
-
-* Tue May 16 2017 Martin Stransky <stransky@redhat.com> - 53.0.2-5
-- Arm gcc6 build fix (mozbz#1337988)
-
-* Fri May 12 2017 Martin Stransky <stransky@redhat.com> - 53.0.2-4
-- Enabled rust on ix86
-
-* Thu May 11 2017 Martin Stransky <stransky@redhat.com> - 53.0.2-3
-- Enabled Rust on Arm builds
-
-* Thu May 11 2017 Martin Stransky <stransky@redhat.com> - 53.0.2-2
-- Enabled Arm builds
-
-* Fri May 5 2017 Jan Horak <jhorak@redhat.com> - 53.0.2-1
-- Update to 53.0.2
-- Cannot use disable-skia for any architecture now
-
-* Thu Apr 27 2017 Jan Horak <jhorak@redhat.com> - 53.0-4
-- Added patch from rhbz#1400293
-
-* Thu Apr 20 2017 Martin Stransky <stransky@redhat.com> - 53.0-3
-- Enabled second arches
-
-* Tue Apr 18 2017 Martin Stransky <stransky@redhat.com> - 53.0-2
-- Disable system hunspell library when necessary
-
-* Tue Apr 18 2017 Martin Stransky <stransky@redhat.com> - 53.0-1
-- Updated to 53.0 (B6)
-
-* Tue Apr 18 2017 Jan Horak <jhorak@redhat.com> - 52.0.2-3
-- Do not use color management until it is fixed for some broken profiles,
- ie. don't set gfx.color_management.enablev4 to true (rhbz#1403970).
-- Added distribution.ini file to fix mozbz#1354489
-
-* Fri Mar 31 2017 Martin Stransky <stransky@redhat.com> - 52.0.2-2
-- Added patch for mozbz#1348576 - enable e10s by default
-- Added patch for mozbz#1158076 - enable dark theme by pref
-
-* Wed Mar 29 2017 Jan Horak <jhorak@redhat.com> - 52.0.2-1
-- Update to 52.0.2
-
-* Mon Mar 27 2017 Martin Stransky <stransky@redhat.com> - 52.0-7
-- Reverted mozbz#1158076 due to rhbz#1435964
-
-* Wed Mar 22 2017 Martin Stransky <stransky@redhat.com> - 52.0-6
-- Added fix for CVE-2017-5428
-- Added fix for mozbz#1158076
-
-* Mon Mar 13 2017 Martin Stransky <stransky@redhat.com> - 52.0-5
-- Enable ALSA backend behind pref (rhbz#1431371)
-
-* Fri Mar 10 2017 Martin Stransky <stransky@redhat.com> - 52.0-4
-- Fixed e10s enablement (rhbz#1398717)
-
-* Tue Mar 7 2017 Jan Horak <jhorak@redhat.com> - 52.0-3
-- Added s390x to big endian platforms
-
-* Tue Mar 7 2017 Jan Horak <jhorak@redhat.com> - 52.0-2
-- Added fix for libicu on big endian platforms
-
-* Fri Mar 3 2017 Martin Stransky <stransky@redhat.com> - 52.0-1
-- Update to 52.0 (B2)
-
-* Thu Mar 02 2017 Kai Engert <kaie@redhat.com> - 51.0.1-11
-- Enable upstream fix for rhbz#1400293 mozbz#1324096 on F26 and Rawhide.
- Keep the old workaround on F24/F25, required base packages aren't
- available yet.
-
-* Thu Mar 2 2017 Martin Stransky <stransky@redhat.com> - 51.0.1-10
-- Test another ARMv7 build setup (rhbz#1426850)
-
-* Mon Feb 27 2017 Martin Stransky <stransky@redhat.com> - 51.0.1-9
-- Disabled ARMv7 due to build failures (rhbz#1426850)
-
-* Mon Feb 27 2017 Martin Stransky <stransky@redhat.com> - 51.0.1-8
-- Enabled ARMv7 (rhbz#1426850)
-
-* Mon Feb 27 2017 Martin Stransky <stransky@redhat.com> - 51.0.1-7
-- Added fix for rhbz#1414535
-
-* Thu Feb 23 2017 Martin Stransky <stransky@redhat.com> - 51.0.1-6
-- Added fix for mozbz#1321579
-
-* Thu Feb 23 2017 Martin Stransky <stransky@redhat.com> - 51.0.1-5
-- Disabled -O3 optimization on rawhide to make FF usable (rhbz#1422532)
-
-* Wed Feb 15 2017 Jan Horak <jhorak@redhat.com> - 51.0.1-4
-- Fixed bug 1421334 - translations for "New window"
-
-* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 51.0.1-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
-
-* Wed Jan 25 2017 Jan Horak <jhorak@redhat.com> - 51.0.1-2
-- Update to 51.0.1
-
-* Tue Jan 24 2017 Martin Stransky <stransky@redhat.com> - 51.0-3
-- Added fix for aarch64 crashes (rhbz#1354671)
-
-* Thu Jan 19 2017 Martin Stransky <stransky@redhat.com> - 51.0-2
-- Update to 51.0 (B2)
-
-* Wed Jan 18 2017 Martin Stransky <stransky@redhat.com> - 51.0-1
-- Update to 51.0 (B1)
-
-* Tue Jan 17 2017 Jan Horak <jhorak@redhat.com> - 50.1.0-4
-- Enable telemetry (rhbz#1412971)
-
-* Mon Jan 16 2017 Martin Stransky <stransky@redhat.com> - 50.1.0-3
-- Added patch for nss 3.28.1 (mozbz#1290037)
-
-* Wed Dec 21 2016 Martin Stransky <stransky@redhat.com> - 50.1.0-2
-- Enabled Mozilla crash reporter
-
-* Tue Dec 13 2016 Martin Stransky <stransky@redhat.com> - 50.1.0-1
-- Updated to 50.1.0
-
-* Wed Nov 30 2016 Martin Stransky <stransky@redhat.com> - 50.0.2-2
-- Added fix for "ABORT: X_ShmAttach: BadAccess" crashes
- (mozbz#1271100)
-
-* Wed Nov 30 2016 Martin Stransky <stransky@redhat.com> - 50.0.2-1
-- Update to latest upstream (50.0.2)
-
-* Mon Nov 28 2016 Martin Stransky <stransky@redhat.com> - 50.0.1-1
-- Update to latest upstream (50.0.1)
-
-* Thu Nov 24 2016 Martin Stransky <stransky@redhat.com> - 50.0-2
-- Rebase Gtk3 widget code to latest trunk to fix
- various rendering problems (rhbz#1397290)
-
-* Thu Nov 10 2016 Martin Stransky <stransky@redhat.com> - 50.0-1
-- Update to 50.0
-
-* Mon Oct 31 2016 Jan Horak <jhorak@redhat.com> - 49.0.2-1
-- Update to 49.0.2
-
-* Mon Sep 26 2016 Jan Horak <jhorak@redhat.com> - 49.0-3
-- Build with rust where possible
-- Added fix for wrong accept-language headers when running with non-english locales
-
-* Mon Sep 19 2016 Martin Stransky <stransky@redhat.com> - 49.0-2
-- Update to Firefox 49 (B4)
-
-* Tue Sep 6 2016 Martin Stransky <stransky@redhat.com> - 49.0-1
-- Update to Firefox 49
-
-* Mon Aug 22 2016 Jan Horak <jhorak@redhat.com> - 48.0.1-2
-- Added translations for .desktop file actions
-
-* Fri Aug 19 2016 Martin Stransky <stransky@redhat.com> - 48.0.1-1
-- Update to 48.0.1
-- Added fix for mozbz#1291700 - Since latest release NTLM/SPNEGO
- no longer works
-
-* Wed Aug 17 2016 Martin Stransky <stransky@redhat.com> - 48.0-6
-- Added patch for mozbz#1225044 - gtk3 rendering glitches
-
-* Fri Jul 29 2016 Martin Stransky <stransky@redhat.com> - 48.0-5
-- Added fix for mozbz#1250704 - tooltips text color
-- Disable system sqlite on F23
-- Package in-tree icu file
-
-* Thu Jul 28 2016 Martin Stransky <stransky@redhat.com> - 48.0-4
-- Enable dark themes by pref in about:config (Bug 1272332)
-- Backported gtk3.20 upstream fixes
-
-* Wed Jul 27 2016 Martin Stransky <stransky@redhat.com> - 48.0-3
-- Updated to 48.0 (B2)
-
-* Wed Jul 27 2016 Jan Horak <jhorak@redhat.com> - 48.0-2
-- Negotiate authentication is made off the main thread again (mozbz#890908)
-- Fixed default prerefences (rhbz#1349489)
-
-* Tue Jul 26 2016 Martin Stransky <stransky@redhat.com> - 48.0-1
-- Updated to 48.0
-
-* Fri Jul 22 2016 Tom Callaway <spot@fedoraproject.org> - 47.0.1-3
-- rebuild for libvpx 1.6.0
-
-* Mon Jul 11 2016 Martin Stransky <stransky@redhat.com> - 47.0.1-2
-- Added fix for mozbz#256180 - gmail paste issues
-
-* Mon Jul 11 2016 Martin Stransky <stransky@redhat.com> - 47.0.1-1
-- Updated to 47.0.1
-
-* Wed Jun 22 2016 Martin Stransky <stransky@redhat.com> - 47.0-6
-- Updated tooltip patch for 3.20
-
-* Mon Jun 6 2016 Martin Stransky <stransky@redhat.com> - 47.0-4
-- Updated to 47.0 (B3)
-- Should fix rhbz#1338010 (rebuilt against new astronomy-bookmarks)
-
-* Fri Jun 3 2016 Martin Stransky <stransky@redhat.com> - 47.0-3
-- Updated to 47.0 (B2)
-
-* Thu Jun 2 2016 Martin Stransky <stransky@redhat.com> - 47.0-2
-- Updated to 47.0
-- Backout of negotiate authentication patch
-
-* Thu May 26 2016 Jan Horak <jhorak@redhat.com> - 46.0.1-9
-- Negotiate authentication is made off the main thread (mozbz#890908)
-
-* Mon May 23 2016 Martin Stransky <stransky@redhat.com> - 46.0.1-8
-- Rebuilt for new bookmarks (rhbz#1338010)
-- Fixed build issue in Gtk3.20 patch
-
-* Fri May 20 2016 Martin Stransky <stransky@redhat.com> - 46.0.1-6
-- Updated Gtk3.20 patch - fixed tooltips
-
-* Thu May 19 2016 Martin Stransky <stransky@redhat.com> - 46.0.1-5
-- Added a fix for mozbz#1245783 - gcc6.1 crashes in JIT
-
-* Thu May 12 2016 Martin Stransky <stransky@redhat.com> - 46.0.1-4
-- Added fix for rhbz#1332821 - Crash on "Select" in "Open with" dialog
-
-* Tue May 10 2016 Martin Stransky <stransky@redhat.com> - 46.0.1-3
-- Added patch for rhbz#1332875 - new Samba auth reponse
-
-* Thu May 5 2016 Martin Stransky <stransky@redhat.com> - 46.0.1-2
-- Disable dark theme until we support it correctly (mozbz#1216658)
-
-* Tue May 3 2016 Martin Stransky <stransky@redhat.com> - 46.0.1-1
-- Updated to 46.0.1
-
-* Mon May 2 2016 Martin Stransky <stransky@redhat.com> - 46.0-6
-- Removed gstreamer config as it's no longer used.
- See rhbz#1331496 for details.
-- Updated Firefox project URL (rhbz#1329014)
-
-* Thu Apr 28 2016 Martin Stransky <stransky@redhat.com> - 46.0-5
-- Added fix for rhbz#1322626 - wrong focused window
-
-* Wed Apr 27 2016 Martin Stransky <stransky@redhat.com> - 46.0-4
-- Added fix for rhbz#1315225 - ppc64le/aarch64 build fixes
-
-* Wed Apr 27 2016 Martin Stransky <stransky@redhat.com> - 46.0-3
-- Fixed missing langpacks
-
-* Tue Apr 26 2016 Martin Stransky <stransky@redhat.com> - 46.0-2
-- Disabled system libicu on Fedora 22/23
-
-* Mon Apr 25 2016 Martin Stransky <stransky@redhat.com> - 46.0-1
-- Updated to 46.0 (B5)
-
-* Thu Apr 21 2016 Martin Stransky <stransky@redhat.com> - 45.0.2-5
-- Added patch for mozbz#1263145
-
-* Wed Apr 20 2016 Martin Stransky <stransky@redhat.com> - 45.0.2-4
-- Updated scrollbar code for Gtk 3.20
-
-* Mon Apr 18 2016 Martin Stransky <stransky@redhat.com> - 45.0.2-2
-- Disabled gcc6 null this optimization (rhbz#1328045)
-
-* Mon Apr 11 2016 Martin Stransky <stransky@redhat.com> - 45.0.2-1
-- New upstream (45.0.2)
-
-* Tue Apr 5 2016 Martin Stransky <stransky@redhat.com> - 45.0.1-6
-- Fixed rhbz#1322669 - Flash widgets are not displayed
-
-* Tue Apr 5 2016 Martin Stransky <stransky@redhat.com> - 45.0.1-5
-- Polished gcc6 patches
-
-* Tue Mar 22 2016 Martin Stransky <stransky@redhat.com> - 45.0.1-4
-- Fixed rhbz#1321355 - broken flash plugin
-- Added /etc/firefox/pref dir for easy configuration
-
-* Mon Mar 21 2016 Martin Stransky <stransky@redhat.com> - 45.0.1-3
-- Provide system wide config dir (mozbz#1170092)
-- Allow lock preferences from .js files (mozbz#440908)
-
-* Mon Mar 21 2016 Martin Stransky <stransky@redhat.com> - 45.0.1-2
-- Fixed rhbz#1293874 - use a Debian patch for disabled extension
- signing
-
-* Wed Mar 16 2016 Martin Stransky <stransky@redhat.com> - 45.0.1-1
-- Update to 45.0.1
-
-* Tue Mar 15 2016 Martin Stransky <stransky@redhat.com> - 45.0-5
-- Updated gtk3.20 patch
-
-* Fri Mar 4 2016 Martin Stransky <stransky@redhat.com> - 45.0-4
-- Update to 45.0 (B2)
-
-* Thu Mar 3 2016 Martin Stransky <stransky@redhat.com> - 45.0-3
-- Added run-time fix for JIT (mozbz#1253216)
-
-* Wed Mar 2 2016 Martin Stransky <stransky@redhat.com> - 45.0-2
-- Disabled system libvpx on Fedora 22 where is 1.3.0
-
-* Wed Mar 2 2016 Martin Stransky <stransky@redhat.com> - 45.0-1
-- Update to 45.0
-
-* Thu Feb 11 2016 Martin Stransky <stransky@redhat.com> - 44.0.2-3
-- Added patch for mozbz#1205199
-
-* Thu Feb 11 2016 Martin Stransky <stransky@redhat.com> - 44.0.2-2
-- Update to 44.0.2 (B3)
-
-* Wed Feb 10 2016 Martin Stransky <stransky@redhat.com> - 44.0.2-1
-- Update to 44.0.2 (B2)
-
-* Mon Feb 8 2016 Martin Stransky <stransky@redhat.com> - 44.0.1-2
-- Update to 44.0.1 (B2)
-
-* Fri Feb 5 2016 Martin Stransky <stransky@redhat.com> - 44.0.1-1
-- Update to 44.0.1
-
-* Thu Feb 4 2016 Jan Horak <jhorak@redhat.com> - 44.0-6
-- Workaround for crash when closing application chooser and Fedora 23
- (rhbz#1291190)
-
-* Tue Feb 2 2016 Martin Stransky <stransky@redhat.com> - 44.0-5
-- GCC 6.0 build patch
-- Disabled mozilla crashreporter to catch Gtk3 crashes
-
-* Mon Feb 1 2016 Martin Stransky <stransky@redhat.com> - 44.0-4
-- Removed pulseaudio hard dependency (rhbz#1303620)
-
-* Tue Jan 26 2016 Ralph Giles <giles@mozilla.com> - 44.0-3
-- Medadata update, require pulseaudio
-
-* Mon Jan 25 2016 Martin Stransky <stransky@redhat.com> - 44.0-2
-- Update to 44.0 B3
-
-* Thu Jan 21 2016 Jan Horak <jhorak@redhat.com> - 44.0-1
-- Update to 44.0
-
-* Thu Jan 14 2016 Martin Stransky <stransky@redhat.com> - 43.0.4-2
-- Fixed the progress bar rendering
-
-* Thu Jan 14 2016 Martin Stransky <stransky@redhat.com> - 43.0.4-1
-- Update to 43.0.4
-
-* Wed Jan 13 2016 Martin Stransky <stransky@redhat.com> - 43.0.3-5
-- Updated progress bars rendering for Gtk 3.20
-
-* 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.
-
-* Mon Jan 4 2016 Martin Stransky <stransky@redhat.com> - 43.0.3-2
-- Enabled Skia (rhbz#1282134)
diff --git a/mozilla-1170092.patch b/mozilla-1170092.patch
index 9e8906f..8a9e86f 100644
--- a/mozilla-1170092.patch
+++ b/mozilla-1170092.patch
@@ -1,7 +1,7 @@
-diff -up firefox-58.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-58.0/extensions/pref/autoconfig/src/nsReadConfig.cpp
---- firefox-58.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2018-01-11 21:17:03.000000000 +0100
-+++ firefox-58.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2018-01-23 13:59:45.446495820 +0100
-@@ -239,9 +239,20 @@ nsresult nsReadConfig::openAndEvaluateJS
+diff -up firefox-63.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-63.0/extensions/pref/autoconfig/src/nsReadConfig.cpp
+--- firefox-63.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2018-10-15 21:20:45.000000000 +0200
++++ firefox-63.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2018-10-18 13:37:55.993001292 +0200
+@@ -265,9 +265,20 @@ nsresult nsReadConfig::openAndEvaluateJS
return rv;
rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile);
@@ -24,10 +24,10 @@ diff -up firefox-58.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 fi
} else {
nsAutoCString location("resource://gre/defaults/autoconfig/");
location += aFileName;
-diff -up firefox-58.0/modules/libpref/Preferences.cpp.1170092 firefox-58.0/modules/libpref/Preferences.cpp
---- firefox-58.0/modules/libpref/Preferences.cpp.1170092 2018-01-23 13:59:45.447495817 +0100
-+++ firefox-58.0/modules/libpref/Preferences.cpp 2018-01-23 14:02:51.456987774 +0100
-@@ -4402,6 +4402,8 @@ pref_InitInitialObjects()
+diff -up firefox-63.0/modules/libpref/Preferences.cpp.1170092 firefox-63.0/modules/libpref/Preferences.cpp
+--- firefox-63.0/modules/libpref/Preferences.cpp.1170092 2018-10-15 21:20:49.000000000 +0200
++++ firefox-63.0/modules/libpref/Preferences.cpp 2018-10-18 13:37:55.994001285 +0200
+@@ -4873,6 +4873,8 @@ Preferences::InitInitialObjects(bool aIs
//
// Thus, in the omni.jar case, we always load app-specific default
// preferences from omni.jar, whether or not `$app == $gre`.
@@ -36,10 +36,10 @@ diff -up firefox-58.0/modules/libpref/Preferences.cpp.1170092 firefox-58.0/modul
nsresult rv;
nsZipFind* findPtr;
-diff -up firefox-58.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-58.0/toolkit/xre/nsXREDirProvider.cpp
---- firefox-58.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2018-01-11 21:17:06.000000000 +0100
-+++ firefox-58.0/toolkit/xre/nsXREDirProvider.cpp 2018-01-23 13:59:45.447495817 +0100
-@@ -59,6 +59,7 @@
+diff -up firefox-63.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-63.0/toolkit/xre/nsXREDirProvider.cpp
+--- firefox-63.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2018-10-15 21:20:52.000000000 +0200
++++ firefox-63.0/toolkit/xre/nsXREDirProvider.cpp 2018-10-18 13:41:06.969581700 +0200
+@@ -57,6 +57,7 @@
#endif
#ifdef XP_UNIX
#include <ctype.h>
@@ -47,7 +47,7 @@ diff -up firefox-58.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-58.0/tool
#endif
#ifdef XP_IOS
#include "UIKitDirProvider.h"
-@@ -554,6 +555,20 @@ nsXREDirProvider::GetFile(const char* aP
+@@ -527,6 +528,20 @@ nsXREDirProvider::GetFile(const char* aP
}
}
}
@@ -68,24 +68,25 @@ diff -up firefox-58.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-58.0/tool
if (NS_FAILED(rv) || !file)
return NS_ERROR_FAILURE;
-@@ -887,6 +902,14 @@ nsXREDirProvider::GetFilesInternal(const
- LoadDirIntoArray(mXULAppDir, kAppendPrefDir, directories);
+@@ -863,6 +878,15 @@ nsXREDirProvider::GetFilesInternal(const
LoadDirsIntoArray(mAppBundleDirectories,
kAppendPrefDir, directories);
+
+ // Add /etc/<application>/pref/ directory if it exists
+ nsCOMPtr<nsIFile> systemPrefDir;
+ rv = NS_GetSpecialDirectory(NS_APP_PREFS_SYSTEM_CONFIG_DIR, getter_AddRefs(systemPrefDir));
+ if (NS_SUCCEEDED(rv)) {
+ rv = systemPrefDir->AppendNative(NS_LITERAL_CSTRING("pref"));
+ if (NS_SUCCEEDED(rv))
-+ directories.AppendObject(systemPrefDir);
++ directories.AppendObject(systemPrefDir);
+ }
-
- rv = NS_NewArrayEnumerator(aResult, directories);
++
+ rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile));
}
-diff -up firefox-58.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-58.0/xpcom/io/nsAppDirectoryServiceDefs.h
---- firefox-58.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2018-01-23 13:59:45.447495817 +0100
-+++ firefox-58.0/xpcom/io/nsAppDirectoryServiceDefs.h 2018-01-23 14:02:02.871120476 +0100
+ else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) {
+diff -up firefox-63.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-63.0/xpcom/io/nsAppDirectoryServiceDefs.h
+--- firefox-63.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2018-10-15 21:20:52.000000000 +0200
++++ firefox-63.0/xpcom/io/nsAppDirectoryServiceDefs.h 2018-10-18 13:37:55.994001285 +0200
@@ -59,6 +59,7 @@
#define NS_APP_PREFS_50_FILE "PrefF"
#define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL"
diff --git a/mozilla-1444437.patch b/mozilla-1444437.patch
deleted file mode 100644
index 79fda10..0000000
--- a/mozilla-1444437.patch
+++ /dev/null
@@ -1,183 +0,0 @@
-
-# HG changeset patch
-# User Martin Stransky <stransky@redhat.com>
-# Date 1530185851 -7200
-# Node ID 7dc09bb0f57c3397f68c424b2a4e781e89069517
-# Parent 15c95df467be553beb39f2e8102c206639e05fde
-Bug 1444437 - [Wayland] Don't map mozcontainer subsurface until parent surface is commited, r?ashie
-
-MozReview-Commit-ID: 4qoyGH8VCAU
-
-diff --git a/widget/gtk/mozcontainer.cpp b/widget/gtk/mozcontainer.cpp
---- a/widget/gtk/mozcontainer.cpp
-+++ b/widget/gtk/mozcontainer.cpp
-@@ -207,17 +207,17 @@ moz_container_init (MozContainer *contai
- gtk_widget_set_redraw_on_allocate(GTK_WIDGET(container), FALSE);
-
- #if defined(MOZ_WAYLAND)
- {
- container->subcompositor = nullptr;
- container->surface = nullptr;
- container->subsurface = nullptr;
- container->eglwindow = nullptr;
-- container->committed = false;
-+ container->parent_surface_committed = false;
-
- GdkDisplay *gdk_display = gtk_widget_get_display(GTK_WIDGET(container));
- if (GDK_IS_WAYLAND_DISPLAY (gdk_display)) {
- // Available as of GTK 3.8+
- static auto sGdkWaylandDisplayGetWlDisplay =
- (wl_display *(*)(GdkDisplay *))
- dlsym(RTLD_DEFAULT, "gdk_wayland_display_get_wl_display");
-
-@@ -228,21 +228,22 @@ moz_container_init (MozContainer *contai
- wl_display_roundtrip(display);
- }
- }
- #endif
- }
-
- #if defined(MOZ_WAYLAND)
- static void
--moz_container_after_paint(GdkFrameClock *clock, MozContainer *container)
-+moz_container_commited_handler(GdkFrameClock *clock, MozContainer *container)
- {
-- container->committed = true;
-- g_signal_handlers_disconnect_by_func(clock,
-- reinterpret_cast<gpointer>(moz_container_after_paint), container);
-+ container->parent_surface_committed = true;
-+ g_signal_handler_disconnect(clock,
-+ container->parent_surface_committed_handler);
-+ container->parent_surface_committed_handler = 0;
- }
-
- /* We want to draw to GdkWindow owned by mContainer from Compositor thread but
- * Gtk+ can be used in main thread only. So we create wayland wl_surface
- * and attach it as an overlay to GdkWindow.
- *
- * see gtk_clutter_embed_ensure_subsurface() at gtk-clutter-embed.c
- * for reference.
-@@ -263,37 +264,44 @@ moz_container_map_surface(MozContainer *
-
- GdkDisplay *display = gtk_widget_get_display(GTK_WIDGET(container));
- if (GDK_IS_X11_DISPLAY(display))
- return false;
-
- if (container->subsurface && container->surface)
- return true;
-
-+ if (!container->parent_surface_committed) {
-+ if (!container->parent_surface_committed_handler) {
-+ GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(container));
-+ GdkFrameClock *clock = sGdkWindowGetFrameClock(window);
-+ container->parent_surface_committed_handler =
-+ g_signal_connect_after(clock, "after-paint",
-+ G_CALLBACK(moz_container_commited_handler),
-+ container);
-+ }
-+ return false;
-+ }
-+
- if (!container->surface) {
- struct wl_compositor *compositor;
- compositor = sGdkWaylandDisplayGetWlCompositor(display);
- container->surface = wl_compositor_create_surface(compositor);
- }
-
- if (!container->subsurface) {
- GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(container));
- wl_surface* gtk_surface = sGdkWaylandWindowGetWlSurface(window);
- if (!gtk_surface) {
- // We requested the underlying wl_surface too early when container
- // is not realized yet. We'll try again before first rendering
- // to mContainer.
- return false;
- }
-
-- GdkFrameClock *clock = sGdkWindowGetFrameClock(window);
-- g_signal_connect_after(clock, "after-paint",
-- G_CALLBACK(moz_container_after_paint),
-- container);
--
- container->subsurface =
- wl_subcompositor_get_subsurface (container->subcompositor,
- container->surface,
- gtk_surface);
- gint x, y;
- gdk_window_get_position(window, &x, &y);
- wl_subsurface_set_position(container->subsurface, x, y);
- wl_subsurface_set_desync(container->subsurface);
-@@ -310,17 +318,29 @@ moz_container_map_surface(MozContainer *
- }
-
- static void
- moz_container_unmap_surface(MozContainer *container)
- {
- g_clear_pointer(&container->eglwindow, wl_egl_window_destroy);
- g_clear_pointer(&container->subsurface, wl_subsurface_destroy);
- g_clear_pointer(&container->surface, wl_surface_destroy);
-- container->committed = false;
-+
-+ if (container->parent_surface_committed_handler) {
-+ static auto sGdkWindowGetFrameClock =
-+ (GdkFrameClock *(*)(GdkWindow *))
-+ dlsym(RTLD_DEFAULT, "gdk_window_get_frame_clock");
-+ GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(container));
-+ GdkFrameClock *clock = sGdkWindowGetFrameClock(window);
-+
-+ g_signal_handler_disconnect(clock,
-+ container->parent_surface_committed_handler);
-+ container->parent_surface_committed_handler = 0;
-+ }
-+ container->parent_surface_committed = false;
- }
-
- #endif
-
- void
- moz_container_map (GtkWidget *widget)
- {
- MozContainer *container;
-@@ -582,17 +602,17 @@ moz_container_get_wl_surface(MozContaine
- if (!container->subsurface || !container->surface) {
- GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(container));
- if (!gdk_window_is_visible(window))
- return nullptr;
-
- moz_container_map_surface(container);
- }
-
-- return container->committed ? container->surface : nullptr;
-+ return container->surface;
- }
-
- struct wl_egl_window *
- moz_container_get_wl_egl_window(MozContainer *container)
- {
- if (!container->eglwindow) {
- struct wl_surface *wlsurf = moz_container_get_wl_surface(container);
- if (!wlsurf)
-diff --git a/widget/gtk/mozcontainer.h b/widget/gtk/mozcontainer.h
---- a/widget/gtk/mozcontainer.h
-+++ b/widget/gtk/mozcontainer.h
-@@ -68,17 +68,18 @@ struct _MozContainer
- GtkContainer container;
- GList *children;
-
- #ifdef MOZ_WAYLAND
- struct wl_subcompositor *subcompositor;
- struct wl_surface *surface;
- struct wl_subsurface *subsurface;
- struct wl_egl_window *eglwindow;
-- gboolean committed;
-+ gboolean parent_surface_committed;
-+ gulong parent_surface_committed_handler;
- #endif
- };
-
- struct _MozContainerClass
- {
- GtkContainerClass parent_class;
- };
-
-
diff --git a/mozilla-1467128.patch b/mozilla-1467128.patch
deleted file mode 100644
index d50b2e2..0000000
--- a/mozilla-1467128.patch
+++ /dev/null
@@ -1,352 +0,0 @@
-
-# HG changeset patch
-# User Martin Stransky <stransky@redhat.com>
-# Date 1530270941 -7200
-# Node ID 338c0093263be6440a33b79a92801bd2b4658f79
-# Parent 84a6d5a0b551f5da116aab702dd38bb725bc8a08
-Bug 1467128 - [Wayland] Get VSync from Gtk/Wayland, r?lsalzman
-
-VSync on Wayland is a bit tricky as we can get only "last VSync" event signal with
-CLOCK_MONOTONIC timestamp or none (if application is hidden/minimized).
-
-That means we should draw a next frame at "last Vsync + frame delay" time and also
-approximate next VSync event when we don't get any.
-
-MozReview-Commit-ID: FI3Z4nkmDNK
-
-diff --git a/gfx/thebes/gfxPlatformGtk.cpp b/gfx/thebes/gfxPlatformGtk.cpp
---- a/gfx/thebes/gfxPlatformGtk.cpp
-+++ b/gfx/thebes/gfxPlatformGtk.cpp
-@@ -46,16 +46,20 @@
- #include "GLContextGLX.h"
- #include "GLXLibrary.h"
-
- /* Undefine the Status from Xlib since it will conflict with system headers on OSX */
- #if defined(__APPLE__) && defined(Status)
- #undef Status
- #endif
-
-+#ifdef MOZ_WAYLAND
-+#include <gdk/gdkwayland.h>
-+#endif
-+
- #endif /* MOZ_X11 */
-
- #include <fontconfig/fontconfig.h>
-
- #include "nsMathUtils.h"
-
- #define GDK_PIXMAP_SIZE_MAX 32767
-
-@@ -89,16 +93,22 @@ gfxPlatformGtk::gfxPlatformGtk()
- #ifdef MOZ_X11
- if (gfxPlatform::IsHeadless() && GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
- mCompositorDisplay = XOpenDisplay(nullptr);
- MOZ_ASSERT(mCompositorDisplay, "Failed to create compositor display!");
- } else {
- mCompositorDisplay = nullptr;
- }
- #endif // MOZ_X11
-+#ifdef MOZ_WAYLAND
-+ // Wayland compositors use g_get_monotonic_time() to get timestamps.
-+ mWaylandLastVsyncTimestamp = (g_get_monotonic_time() / 1000);
-+ // Set default display fps to 60
-+ mWaylandFrameDelay = 1000/60;
-+#endif
- }
-
- gfxPlatformGtk::~gfxPlatformGtk()
- {
- #ifdef MOZ_X11
- if (mCompositorDisplay) {
- XCloseDisplay(mCompositorDisplay);
- }
-@@ -505,26 +515,26 @@ gfxPlatformGtk::CheckVariationFontSuppor
- // until at least 2.7.1.
- FT_Int major, minor, patch;
- FT_Library_Version(GetFTLibrary(), &major, &minor, &patch);
- return major * 1000000 + minor * 1000 + patch >= 2007001;
- }
-
- #ifdef MOZ_X11
-
--class GLXVsyncSource final : public VsyncSource
-+class GtkVsyncSource final : public VsyncSource
- {
- public:
-- GLXVsyncSource()
-+ GtkVsyncSource()
- {
- MOZ_ASSERT(NS_IsMainThread());
- mGlobalDisplay = new GLXDisplay();
- }
-
-- virtual ~GLXVsyncSource()
-+ virtual ~GtkVsyncSource()
- {
- MOZ_ASSERT(NS_IsMainThread());
- }
-
- virtual Display& GetGlobalDisplay() override
- {
- return *mGlobalDisplay;
- }
-@@ -536,39 +546,52 @@ public:
- public:
- GLXDisplay() : mGLContext(nullptr)
- , mXDisplay(nullptr)
- , mSetupLock("GLXVsyncSetupLock")
- , mVsyncThread("GLXVsyncThread")
- , mVsyncTask(nullptr)
- , mVsyncEnabledLock("GLXVsyncEnabledLock")
- , mVsyncEnabled(false)
-+#ifdef MOZ_WAYLAND
-+ , mIsWaylandDisplay(false)
-+#endif
- {
- }
-
- // Sets up the display's GL context on a worker thread.
- // Required as GLContexts may only be used by the creating thread.
- // Returns true if setup was a success.
- bool Setup()
- {
- MonitorAutoLock lock(mSetupLock);
- MOZ_ASSERT(NS_IsMainThread());
- if (!mVsyncThread.Start())
- return false;
-
- RefPtr<Runnable> vsyncSetup =
-- NewRunnableMethod("GLXVsyncSource::GLXDisplay::SetupGLContext",
-+ NewRunnableMethod("GtkVsyncSource::GLXDisplay::SetupGLContext",
- this,
- &GLXDisplay::SetupGLContext);
- mVsyncThread.message_loop()->PostTask(vsyncSetup.forget());
- // Wait until the setup has completed.
- lock.Wait();
- return mGLContext != nullptr;
- }
-
-+#ifdef MOZ_WAYLAND
-+ bool SetupWayland()
-+ {
-+ MonitorAutoLock lock(mSetupLock);
-+ MOZ_ASSERT(NS_IsMainThread());
-+ mIsWaylandDisplay = true;
-+ return mVsyncThread.Start();
-+ }
-+#endif
-+
- // Called on the Vsync thread to setup the GL context.
- void SetupGLContext()
- {
- MonitorAutoLock lock(mSetupLock);
- MOZ_ASSERT(!NS_IsMainThread());
- MOZ_ASSERT(!mGLContext, "GLContext already setup!");
-
- // Create video sync timer on a separate Display to prevent locking the
-@@ -613,29 +636,35 @@ public:
- }
-
- lock.NotifyAll();
- }
-
- virtual void EnableVsync() override
- {
- MOZ_ASSERT(NS_IsMainThread());
-+#if !defined(MOZ_WAYLAND)
- MOZ_ASSERT(mGLContext, "GLContext not setup!");
-+#endif
-
- MonitorAutoLock lock(mVsyncEnabledLock);
- if (mVsyncEnabled) {
- return;
- }
- mVsyncEnabled = true;
-
- // If the task has not nulled itself out, it hasn't yet realized
- // that vsync was disabled earlier, so continue its execution.
- if (!mVsyncTask) {
- mVsyncTask = NewRunnableMethod(
-- "GLXVsyncSource::GLXDisplay::RunVsync", this, &GLXDisplay::RunVsync);
-+ "GtkVsyncSource::GLXDisplay::RunVsync", this,
-+#if defined(MOZ_WAYLAND)
-+ mIsWaylandDisplay ? &GLXDisplay::RunVsyncWayland :
-+#endif
-+ &GLXDisplay::RunVsync);
- RefPtr<Runnable> addrefedTask = mVsyncTask;
- mVsyncThread.message_loop()->PostTask(addrefedTask.forget());
- }
- }
-
- virtual void DisableVsync() override
- {
- MonitorAutoLock lock(mVsyncEnabledLock);
-@@ -650,17 +679,17 @@ public:
-
- virtual void Shutdown() override
- {
- MOZ_ASSERT(NS_IsMainThread());
- DisableVsync();
-
- // Cleanup thread-specific resources before shutting down.
- RefPtr<Runnable> shutdownTask = NewRunnableMethod(
-- "GLXVsyncSource::GLXDisplay::Cleanup", this, &GLXDisplay::Cleanup);
-+ "GtkVsyncSource::GLXDisplay::Cleanup", this, &GLXDisplay::Cleanup);
- mVsyncThread.message_loop()->PostTask(shutdownTask.forget());
-
- // Stop, waiting for the cleanup task to finish execution.
- mVsyncThread.Stop();
- }
-
- private:
- virtual ~GLXDisplay()
-@@ -709,50 +738,96 @@ public:
- }
- }
-
- lastVsync = TimeStamp::Now();
- NotifyVsync(lastVsync);
- }
- }
-
-+#ifdef MOZ_WAYLAND
-+ /* VSync on Wayland is tricky as we can get only "last VSync" event signal.
-+ * That means we should draw next frame at "last Vsync + frame delay" time.
-+ */
-+ void RunVsyncWayland()
-+ {
-+ MOZ_ASSERT(!NS_IsMainThread());
-+
-+ for (;;) {
-+ {
-+ MonitorAutoLock lock(mVsyncEnabledLock);
-+ if (!mVsyncEnabled) {
-+ mVsyncTask = nullptr;
-+ return;
-+ }
-+ }
-+
-+ gint64 lastVsync = gfxPlatformGtk::GetPlatform()->GetWaylandLastVsync();
-+ gint64 currTime = (g_get_monotonic_time() / 1000);
-+
-+ gint64 remaining = gfxPlatformGtk::GetPlatform()->GetWaylandFrameDelay() -
-+ (currTime - lastVsync);
-+ if (remaining > 0) {
-+ PlatformThread::Sleep(remaining);
-+ } else {
-+ // Time from last HW Vsync is longer than our frame delay,
-+ // use our approximation then.
-+ gfxPlatformGtk::GetPlatform()->SetWaylandLastVsync(currTime);
-+ }
-+
-+ NotifyVsync(TimeStamp::Now());
-+ }
-+ }
-+#endif
-+
- void Cleanup() {
- MOZ_ASSERT(!NS_IsMainThread());
-
- mGLContext = nullptr;
-- XCloseDisplay(mXDisplay);
-+ if (mXDisplay)
-+ XCloseDisplay(mXDisplay);
- }
-
- // Owned by the vsync thread.
- RefPtr<gl::GLContextGLX> mGLContext;
- _XDisplay* mXDisplay;
- Monitor mSetupLock;
- base::Thread mVsyncThread;
- RefPtr<Runnable> mVsyncTask;
- Monitor mVsyncEnabledLock;
- bool mVsyncEnabled;
-+#ifdef MOZ_WAYLAND
-+ bool mIsWaylandDisplay;
-+#endif
- };
- private:
- // We need a refcounted VsyncSource::Display to use chromium IPC runnables.
- RefPtr<GLXDisplay> mGlobalDisplay;
- };
-
- already_AddRefed<gfx::VsyncSource>
- gfxPlatformGtk::CreateHardwareVsyncSource()
- {
-+#ifdef MOZ_WAYLAND
-+ if (GDK_IS_WAYLAND_DISPLAY(gdk_display_get_default())) {
-+ RefPtr<VsyncSource> vsyncSource = new GtkVsyncSource();
-+ VsyncSource::Display& display = vsyncSource->GetGlobalDisplay();
-+ static_cast<GtkVsyncSource::GLXDisplay&>(display).SetupWayland();
-+ return vsyncSource.forget();
-+ }
-+#endif
-+
- // Only use GLX vsync when the OpenGL compositor is being used.
- // The extra cost of initializing a GLX context while blocking the main
- // thread is not worth it when using basic composition.
-- // Also don't use it on non-X11 displays.
- if (gfxConfig::IsEnabled(Feature::HW_COMPOSITING)) {
-- if (GDK_IS_X11_DISPLAY(gdk_display_get_default()) &&
-- gl::sGLXLibrary.SupportsVideoSync()) {
-- RefPtr<VsyncSource> vsyncSource = new GLXVsyncSource();
-+ if (gl::sGLXLibrary.SupportsVideoSync()) {
-+ RefPtr<VsyncSource> vsyncSource = new GtkVsyncSource();
- VsyncSource::Display& display = vsyncSource->GetGlobalDisplay();
-- if (!static_cast<GLXVsyncSource::GLXDisplay&>(display).Setup()) {
-+ if (!static_cast<GtkVsyncSource::GLXDisplay&>(display).Setup()) {
- NS_WARNING("Failed to setup GLContext, falling back to software vsync.");
- return gfxPlatform::CreateHardwareVsyncSource();
- }
- return vsyncSource.forget();
- }
- NS_WARNING("SGI_video_sync unsupported. Falling back to software vsync.");
- }
- return gfxPlatform::CreateHardwareVsyncSource();
-diff --git a/gfx/thebes/gfxPlatformGtk.h b/gfx/thebes/gfxPlatformGtk.h
---- a/gfx/thebes/gfxPlatformGtk.h
-+++ b/gfx/thebes/gfxPlatformGtk.h
-@@ -102,23 +102,42 @@ public:
- #endif
-
- #ifdef MOZ_X11
- Display* GetCompositorDisplay() {
- return mCompositorDisplay;
- }
- #endif // MOZ_X11
-
-+#ifdef MOZ_WAYLAND
-+ void SetWaylandLastVsync(uint32_t aVsyncTimestamp) {
-+ mWaylandLastVsyncTimestamp = aVsyncTimestamp;
-+ }
-+ int64_t GetWaylandLastVsync() {
-+ return mWaylandLastVsyncTimestamp;
-+ }
-+ void SetWaylandFrameDelay(int64_t aFrameDelay) {
-+ mWaylandFrameDelay = aFrameDelay;
-+ }
-+ int64_t GetWaylandFrameDelay() {
-+ return mWaylandFrameDelay;
-+ }
-+#endif
-+
- protected:
- bool CheckVariationFontSupport() override;
-
- int8_t mMaxGenericSubstitutions;
-
- private:
- virtual void GetPlatformCMSOutputProfile(void *&mem,
- size_t &size) override;
-
- #ifdef MOZ_X11
- Display* mCompositorDisplay;
- #endif
-+#ifdef MOZ_WAYLAND
-+ int64_t mWaylandLastVsyncTimestamp;
-+ int64_t mWaylandFrameDelay;
-+#endif
- };
-
- #endif /* GFX_PLATFORM_GTK_H */
diff --git a/mozilla-wayland-trunk.patch b/mozilla-wayland-trunk.patch
deleted file mode 100644
index 8c3746a..0000000
--- a/mozilla-wayland-trunk.patch
+++ /dev/null
@@ -1,519 +0,0 @@
-Wayland patches from Firefox 63.
-
-diff -up firefox-62.0.3/widget/gtk/mozcontainer.cpp.old firefox-62.0.3/widget/gtk/mozcontainer.cpp
---- firefox-62.0.3/widget/gtk/mozcontainer.cpp.old 2018-10-08 11:52:33.442449788 +0200
-+++ firefox-62.0.3/widget/gtk/mozcontainer.cpp 2018-08-21 14:22:12.668885853 +0200
-@@ -605,6 +605,15 @@ moz_container_get_wl_surface(MozContaine
- return nullptr;
-
- moz_container_map_surface(container);
-+ // Set the scale factor for the buffer right after we create it.
-+ if (container->surface) {
-+ static auto sGdkWindowGetScaleFactorPtr = (gint (*)(GdkWindow*))
-+ dlsym(RTLD_DEFAULT, "gdk_window_get_scale_factor");
-+ if (sGdkWindowGetScaleFactorPtr && window) {
-+ gint scaleFactor = (*sGdkWindowGetScaleFactorPtr)(window);
-+ wl_surface_set_buffer_scale(container->surface, scaleFactor);
-+ }
-+ }
- }
-
- return container->surface;
-diff -up firefox-62.0.3/widget/gtk/WindowSurfaceWayland.cpp.old firefox-62.0.3/widget/gtk/WindowSurfaceWayland.cpp
---- firefox-62.0.3/widget/gtk/WindowSurfaceWayland.cpp.old 2018-10-08 11:52:47.907392869 +0200
-+++ firefox-62.0.3/widget/gtk/WindowSurfaceWayland.cpp 2018-09-06 11:01:18.801964790 +0200
-@@ -151,8 +151,9 @@ static nsWaylandDisplay* WaylandDisplayG
- static void WaylandDisplayRelease(wl_display *aDisplay);
- static void WaylandDisplayLoop(wl_display *aDisplay);
-
--// TODO: is the 60pfs loop correct?
--#define EVENT_LOOP_DELAY (1000/60)
-+// TODO: Bug 1467125 - We need to integrate wl_display_dispatch_queue_pending() with
-+// compositor event loop.
-+#define EVENT_LOOP_DELAY (1000/240)
-
- // Get WaylandDisplay for given wl_display and actual calling thread.
- static nsWaylandDisplay*
-@@ -523,7 +524,7 @@ WindowBackBuffer::Detach()
- }
-
- bool
--WindowBackBuffer::SetImageDataFromBackBuffer(
-+WindowBackBuffer::SetImageDataFromBuffer(
- class WindowBackBuffer* aSourceBuffer)
- {
- if (!IsMatchingSize(aSourceBuffer)) {
-@@ -550,6 +551,8 @@ frame_callback_handler(void *data, struc
- {
- auto surface = reinterpret_cast<WindowSurfaceWayland*>(data);
- surface->FrameCallbackHandler();
-+
-+ gfxPlatformGtk::GetPlatform()->SetWaylandLastVsync(time);
- }
-
- static const struct wl_callback_listener frame_listener = {
-@@ -559,27 +562,40 @@ static const struct wl_callback_listener
- WindowSurfaceWayland::WindowSurfaceWayland(nsWindow *aWindow)
- : mWindow(aWindow)
- , mWaylandDisplay(WaylandDisplayGet(aWindow->GetWaylandDisplay()))
-- , mFrontBuffer(nullptr)
-- , mBackBuffer(nullptr)
-+ , mWaylandBuffer(nullptr)
-+ , mBackupBuffer(nullptr)
- , mFrameCallback(nullptr)
-- , mFrameCallbackSurface(nullptr)
-+ , mLastCommittedSurface(nullptr)
- , mDisplayThreadMessageLoop(MessageLoop::current())
-- , mDirectWlBufferDraw(true)
-- , mDelayedCommit(false)
-- , mFullScreenDamage(false)
-+ , mDelayedCommitHandle(nullptr)
-+ , mDrawToWaylandBufferDirectly(true)
-+ , mPendingCommit(false)
-+ , mWaylandBufferFullScreenDamage(false)
- , mIsMainThread(NS_IsMainThread())
-+ , mNeedScaleFactorUpdate(true)
- {
- }
-
- WindowSurfaceWayland::~WindowSurfaceWayland()
- {
-- delete mFrontBuffer;
-- delete mBackBuffer;
-+ if (mPendingCommit) {
-+ NS_WARNING("Deleted WindowSurfaceWayland with a pending commit!");
-+ }
-+
-+ if (mDelayedCommitHandle) {
-+ // Delete reference to this to prevent WaylandBufferDelayCommitHandler()
-+ // operate on released this. mDelayedCommitHandle itself will
-+ // be released at WaylandBufferDelayCommitHandler().
-+ *mDelayedCommitHandle = nullptr;
-+ }
-
- if (mFrameCallback) {
- wl_callback_destroy(mFrameCallback);
- }
-
-+ delete mWaylandBuffer;
-+ delete mBackupBuffer;
-+
- if (!mIsMainThread) {
- // We can be destroyed from main thread even though we was created/used
- // in compositor thread. We have to unref/delete WaylandDisplay in compositor
-@@ -593,73 +609,64 @@ WindowSurfaceWayland::~WindowSurfaceWayl
- }
- }
-
--void
--WindowSurfaceWayland::UpdateScaleFactor()
--{
-- wl_surface* waylandSurface = mWindow->GetWaylandSurface();
-- if (waylandSurface) {
-- wl_surface_set_buffer_scale(waylandSurface, mWindow->GdkScaleFactor());
-- }
--}
--
- WindowBackBuffer*
--WindowSurfaceWayland::GetFrontBufferToDraw(int aWidth, int aHeight)
-+WindowSurfaceWayland::GetWaylandBufferToDraw(int aWidth, int aHeight)
- {
-- if (!mFrontBuffer) {
-- mFrontBuffer = new WindowBackBuffer(mWaylandDisplay, aWidth, aHeight);
-- mBackBuffer = new WindowBackBuffer(mWaylandDisplay, aWidth, aHeight);
-- return mFrontBuffer;
-+ if (!mWaylandBuffer) {
-+ mWaylandBuffer = new WindowBackBuffer(mWaylandDisplay, aWidth, aHeight);
-+ mBackupBuffer = new WindowBackBuffer(mWaylandDisplay, aWidth, aHeight);
-+ return mWaylandBuffer;
- }
-
-- if (!mFrontBuffer->IsAttached()) {
-- if (!mFrontBuffer->IsMatchingSize(aWidth, aHeight)) {
-- mFrontBuffer->Resize(aWidth, aHeight);
-+ if (!mWaylandBuffer->IsAttached()) {
-+ if (!mWaylandBuffer->IsMatchingSize(aWidth, aHeight)) {
-+ mWaylandBuffer->Resize(aWidth, aHeight);
- // There's a chance that scale factor has been changed
- // when buffer size changed
-- UpdateScaleFactor();
-+ mNeedScaleFactorUpdate = true;
- }
-- return mFrontBuffer;
-+ return mWaylandBuffer;
- }
-
- // Front buffer is used by compositor, draw to back buffer
-- if (mBackBuffer->IsAttached()) {
-+ if (mBackupBuffer->IsAttached()) {
- NS_WARNING("No drawing buffer available");
- return nullptr;
- }
-
-- MOZ_ASSERT(!mDelayedCommit,
-+ MOZ_ASSERT(!mPendingCommit,
- "Uncommitted buffer switch, screen artifacts ahead.");
-
-- WindowBackBuffer *tmp = mFrontBuffer;
-- mFrontBuffer = mBackBuffer;
-- mBackBuffer = tmp;
-+ WindowBackBuffer *tmp = mWaylandBuffer;
-+ mWaylandBuffer = mBackupBuffer;
-+ mBackupBuffer = tmp;
-
-- if (mBackBuffer->IsMatchingSize(aWidth, aHeight)) {
-+ if (mBackupBuffer->IsMatchingSize(aWidth, aHeight)) {
- // Former front buffer has the same size as a requested one.
- // Gecko may expect a content already drawn on screen so copy
- // existing data to the new buffer.
-- mFrontBuffer->SetImageDataFromBackBuffer(mBackBuffer);
-+ mWaylandBuffer->SetImageDataFromBuffer(mBackupBuffer);
- // When buffer switches we need to damage whole screen
- // (https://bugzilla.redhat.com/show_bug.cgi?id=1418260)
-- mFullScreenDamage = true;
-+ mWaylandBufferFullScreenDamage = true;
- } else {
- // Former buffer has different size from the new request. Only resize
- // the new buffer and leave gecko to render new whole content.
-- mFrontBuffer->Resize(aWidth, aHeight);
-+ mWaylandBuffer->Resize(aWidth, aHeight);
- }
-
-- return mFrontBuffer;
-+ return mWaylandBuffer;
- }
-
- already_AddRefed<gfx::DrawTarget>
--WindowSurfaceWayland::LockFrontBuffer(int aWidth, int aHeight)
-+WindowSurfaceWayland::LockWaylandBuffer(int aWidth, int aHeight)
- {
-- WindowBackBuffer* buffer = GetFrontBufferToDraw(aWidth, aHeight);
-+ WindowBackBuffer* buffer = GetWaylandBufferToDraw(aWidth, aHeight);
- if (buffer) {
- return buffer->Lock();
- }
-
-- NS_WARNING("WindowSurfaceWayland::LockFrontBuffer(): No buffer available");
-+ NS_WARNING("WindowSurfaceWayland::LockWaylandBuffer(): No buffer available");
- return nullptr;
- }
-
-@@ -687,8 +694,8 @@ WindowSurfaceWayland::LockImageSurface(c
- A) Lock() is called to whole surface. In that case we don't need
- to clip/buffer the drawing and we can return wl_buffer directly
- for drawing.
-- - mFrontBuffer is available - that's an ideal situation.
-- - mFrontBuffer is locked by compositor - flip buffers and draw.
-+ - mWaylandBuffer is available - that's an ideal situation.
-+ - mWaylandBuffer is locked by compositor - flip buffers and draw.
- - if we can't flip buffers - go B)
-
- B) Lock() is requested for part(s) of screen. We need to provide temporary
-@@ -704,30 +711,30 @@ WindowSurfaceWayland::Lock(const LayoutD
- gfx::IntSize lockSize(bounds.XMost(), bounds.YMost());
-
- // Are we asked for entire nsWindow to draw?
-- mDirectWlBufferDraw = (aRegion.GetNumRects() == 1 &&
-- bounds.x == 0 && bounds.y == 0 &&
-- lockSize.width == screenRect.width &&
-- lockSize.height == screenRect.height);
--
-- if (mDirectWlBufferDraw) {
-- RefPtr<gfx::DrawTarget> dt = LockFrontBuffer(screenRect.width,
-- screenRect.height);
-+ mDrawToWaylandBufferDirectly = (aRegion.GetNumRects() == 1 &&
-+ bounds.x == 0 && bounds.y == 0 &&
-+ lockSize.width == screenRect.width &&
-+ lockSize.height == screenRect.height);
-+
-+ if (mDrawToWaylandBufferDirectly) {
-+ RefPtr<gfx::DrawTarget> dt = LockWaylandBuffer(screenRect.width,
-+ screenRect.height);
- if (dt) {
- return dt.forget();
- }
-
- // We don't have any front buffer available. Try indirect drawing
- // to mImageSurface which is mirrored to front buffer at commit.
-- mDirectWlBufferDraw = false;
-+ mDrawToWaylandBufferDirectly = false;
- }
-
- return LockImageSurface(lockSize);
- }
-
- bool
--WindowSurfaceWayland::CommitImageSurface(const LayoutDeviceIntRegion& aRegion)
-+WindowSurfaceWayland::CommitImageSurfaceToWaylandBuffer(const LayoutDeviceIntRegion& aRegion)
- {
-- MOZ_ASSERT(!mDirectWlBufferDraw);
-+ MOZ_ASSERT(!mDrawToWaylandBufferDirectly);
-
- LayoutDeviceIntRect screenRect = mWindow->GetBounds();
- gfx::IntRect bounds = aRegion.GetBounds().ToUnknownRect();
-@@ -737,8 +744,8 @@ WindowSurfaceWayland::CommitImageSurface
- return false;
- }
-
-- RefPtr<gfx::DrawTarget> dt = LockFrontBuffer(screenRect.width,
-- screenRect.height);
-+ RefPtr<gfx::DrawTarget> dt = LockWaylandBuffer(screenRect.width,
-+ screenRect.height);
- RefPtr<gfx::SourceSurface> surf =
- gfx::Factory::CreateSourceSurfaceForCairoSurface(mImageSurface->CairoSurface(),
- mImageSurface->GetSize(),
-@@ -766,92 +773,145 @@ WindowSurfaceWayland::CommitImageSurface
- return true;
- }
-
-+static void
-+WaylandBufferDelayCommitHandler(WindowSurfaceWayland **aSurface)
-+{
-+ if (*aSurface) {
-+ (*aSurface)->DelayedCommitHandler();
-+ } else {
-+ // Referenced WindowSurfaceWayland is already deleted.
-+ // Do nothing but just release the mDelayedCommitHandle allocated at
-+ // WindowSurfaceWayland::CommitWaylandBuffer().
-+ free(aSurface);
-+ }
-+}
-+
- void
--WindowSurfaceWayland::Commit(const LayoutDeviceIntRegion& aInvalidRegion)
-+WindowSurfaceWayland::CommitWaylandBuffer()
- {
-- MOZ_ASSERT(mIsMainThread == NS_IsMainThread());
-+ MOZ_ASSERT(mPendingCommit, "Committing empty surface!");
-
- wl_surface* waylandSurface = mWindow->GetWaylandSurface();
- if (!waylandSurface) {
-- // Target window is already destroyed - don't bother to render there.
-- NS_WARNING("WindowSurfaceWayland::Commit(): parent wl_surface is already hidden/deleted.");
-+ // Target window is not created yet - delay the commit. This can happen only
-+ // when the window is newly created and there's no active
-+ // frame callback pending.
-+ MOZ_ASSERT(!mFrameCallback || waylandSurface != mLastCommittedSurface,
-+ "Missing wayland surface at frame callback!");
-+
-+ // Do nothing if there's already mDelayedCommitHandle pending.
-+ if (!mDelayedCommitHandle) {
-+ mDelayedCommitHandle = static_cast<WindowSurfaceWayland**>(
-+ moz_xmalloc(sizeof(*mDelayedCommitHandle)));
-+ *mDelayedCommitHandle = this;
-+
-+ MessageLoop::current()->PostDelayedTask(
-+ NewRunnableFunction("WaylandBackBufferCommit",
-+ &WaylandBufferDelayCommitHandler,
-+ mDelayedCommitHandle),
-+ EVENT_LOOP_DELAY);
-+ }
- return;
- }
- wl_proxy_set_queue((struct wl_proxy *)waylandSurface,
- mWaylandDisplay->GetEventQueue());
-
-- if (!mDirectWlBufferDraw) {
-- // We have new content at mImageSurface - copy data to mFrontBuffer first.
-- CommitImageSurface(aInvalidRegion);
-+ // We have an active frame callback request so handle it.
-+ if (mFrameCallback) {
-+ if (waylandSurface == mLastCommittedSurface) {
-+ // We have an active frame callback pending from our recent surface.
-+ // It means we should defer the commit to FrameCallbackHandler().
-+ return;
-+ }
-+ // If our stored wl_surface does not match the actual one it means the frame
-+ // callback is no longer active and we should release it.
-+ wl_callback_destroy(mFrameCallback);
-+ mFrameCallback = nullptr;
-+ mLastCommittedSurface = nullptr;
- }
-
-- if (mFullScreenDamage) {
-+ if (mWaylandBufferFullScreenDamage) {
- LayoutDeviceIntRect rect = mWindow->GetBounds();
- wl_surface_damage(waylandSurface, 0, 0, rect.width, rect.height);
-- mFullScreenDamage = false;
-+ mWaylandBufferFullScreenDamage = false;
- } else {
-- for (auto iter = aInvalidRegion.RectIter(); !iter.Done(); iter.Next()) {
-+ gint scaleFactor = mWindow->GdkScaleFactor();
-+ for (auto iter = mWaylandBufferDamage.RectIter(); !iter.Done(); iter.Next()) {
- const mozilla::LayoutDeviceIntRect &r = iter.Get();
-- wl_surface_damage(waylandSurface, r.x, r.y, r.width, r.height);
-+ // We need to remove the scale factor because the wl_surface_damage
-+ // also multiplies by current scale factor.
-+ wl_surface_damage(waylandSurface, r.x/scaleFactor, r.y/scaleFactor,
-+ r.width/scaleFactor, r.height/scaleFactor);
- }
- }
-
-- // Frame callback is always connected to actual wl_surface. When the surface
-- // is unmapped/deleted the frame callback is never called. Unfortunatelly
-- // we don't know if the frame callback is not going to be called.
-- // But our mozcontainer code deletes wl_surface when the GdkWindow is hidden
-- // creates a new one when is visible.
-- if (mFrameCallback && mFrameCallbackSurface == waylandSurface) {
-- // Do nothing here - we have a valid wl_surface and the buffer will be
-- // commited to compositor in next frame callback event.
-- mDelayedCommit = true;
-- return;
-- } else {
-- if (mFrameCallback) {
-- // Delete frame callback connected to obsoleted wl_surface.
-- wl_callback_destroy(mFrameCallback);
-- }
-+ // Clear all back buffer damage as we're committing
-+ // all requested regions.
-+ mWaylandBufferDamage.SetEmpty();
-+
-+ mFrameCallback = wl_surface_frame(waylandSurface);
-+ wl_callback_add_listener(mFrameCallback, &frame_listener, this);
-
-- mFrameCallback = wl_surface_frame(waylandSurface);
-- wl_callback_add_listener(mFrameCallback, &frame_listener, this);
-- mFrameCallbackSurface = waylandSurface;
--
-- // There's no pending frame callback so we can draw immediately
-- // and create frame callback for possible subsequent drawing.
-- mFrontBuffer->Attach(waylandSurface);
-- mDelayedCommit = false;
-+ if (mNeedScaleFactorUpdate || mLastCommittedSurface != waylandSurface) {
-+ wl_surface_set_buffer_scale(waylandSurface, mWindow->GdkScaleFactor());
-+ mNeedScaleFactorUpdate = false;
- }
-+
-+ mWaylandBuffer->Attach(waylandSurface);
-+ mLastCommittedSurface = waylandSurface;
-+
-+ // There's no pending commit, all changes are sent to compositor.
-+ mPendingCommit = false;
-+}
-+
-+void
-+WindowSurfaceWayland::Commit(const LayoutDeviceIntRegion& aInvalidRegion)
-+{
-+ MOZ_ASSERT(mIsMainThread == NS_IsMainThread());
-+
-+ // We have new content at mImageSurface - copy data to mWaylandBuffer first.
-+ if (!mDrawToWaylandBufferDirectly) {
-+ CommitImageSurfaceToWaylandBuffer(aInvalidRegion);
-+ }
-+
-+ // If we're not at fullscreen damage add drawing area from aInvalidRegion
-+ if (!mWaylandBufferFullScreenDamage) {
-+ mWaylandBufferDamage.OrWith(aInvalidRegion);
-+ }
-+
-+ // We're ready to commit.
-+ mPendingCommit = true;
-+ CommitWaylandBuffer();
- }
-
- void
- WindowSurfaceWayland::FrameCallbackHandler()
- {
- MOZ_ASSERT(mIsMainThread == NS_IsMainThread());
-+ MOZ_ASSERT(mFrameCallback != nullptr,
-+ "FrameCallbackHandler() called without valid frame callback!");
-+ MOZ_ASSERT(mLastCommittedSurface != nullptr,
-+ "FrameCallbackHandler() called without valid wl_surface!");
-
-- if (mFrameCallback) {
-- wl_callback_destroy(mFrameCallback);
-- mFrameCallback = nullptr;
-- mFrameCallbackSurface = nullptr;
-+ wl_callback_destroy(mFrameCallback);
-+ mFrameCallback = nullptr;
-+
-+ if (mPendingCommit) {
-+ CommitWaylandBuffer();
- }
-+}
-
-- if (mDelayedCommit) {
-- wl_surface* waylandSurface = mWindow->GetWaylandSurface();
-- if (!waylandSurface) {
-- // Target window is already destroyed - don't bother to render there.
-- NS_WARNING("WindowSurfaceWayland::FrameCallbackHandler(): parent wl_surface is already hidden/deleted.");
-- return;
-- }
-- wl_proxy_set_queue((struct wl_proxy *)waylandSurface,
-- mWaylandDisplay->GetEventQueue());
-+void
-+WindowSurfaceWayland::DelayedCommitHandler()
-+{
-+ MOZ_ASSERT(mDelayedCommitHandle != nullptr, "Missing mDelayedCommitHandle!");
-
-- // Send pending surface to compositor and register frame callback
-- // for possible subsequent drawing.
-- mFrameCallback = wl_surface_frame(waylandSurface);
-- wl_callback_add_listener(mFrameCallback, &frame_listener, this);
-- mFrameCallbackSurface = waylandSurface;
-+ *mDelayedCommitHandle = nullptr;
-+ free(mDelayedCommitHandle);
-+ mDelayedCommitHandle = nullptr;
-
-- mFrontBuffer->Attach(waylandSurface);
-- mDelayedCommit = false;
-+ if (mPendingCommit) {
-+ CommitWaylandBuffer();
- }
- }
-
-diff -up firefox-62.0.3/widget/gtk/WindowSurfaceWayland.h.old firefox-62.0.3/widget/gtk/WindowSurfaceWayland.h
---- firefox-62.0.3/widget/gtk/WindowSurfaceWayland.h.old 2018-10-08 11:52:52.154376159 +0200
-+++ firefox-62.0.3/widget/gtk/WindowSurfaceWayland.h 2018-09-06 11:01:18.802964787 +0200
-@@ -74,7 +74,7 @@ public:
- bool IsAttached() { return mAttached; }
-
- bool Resize(int aWidth, int aHeight);
-- bool SetImageDataFromBackBuffer(class WindowBackBuffer* aSourceBuffer);
-+ bool SetImageDataFromBuffer(class WindowBackBuffer* aSourceBuffer);
-
- bool IsMatchingSize(int aWidth, int aHeight)
- {
-@@ -111,28 +111,32 @@ public:
- already_AddRefed<gfx::DrawTarget> Lock(const LayoutDeviceIntRegion& aRegion) override;
- void Commit(const LayoutDeviceIntRegion& aInvalidRegion) final;
- void FrameCallbackHandler();
-+ void DelayedCommitHandler();
-
- private:
-- WindowBackBuffer* GetFrontBufferToDraw(int aWidth, int aHeight);
-- void UpdateScaleFactor();
-+ WindowBackBuffer* GetWaylandBufferToDraw(int aWidth, int aHeight);
-
-- already_AddRefed<gfx::DrawTarget> LockFrontBuffer(int aWidth, int aHeight);
-+ already_AddRefed<gfx::DrawTarget> LockWaylandBuffer(int aWidth, int aHeight);
- already_AddRefed<gfx::DrawTarget> LockImageSurface(const gfx::IntSize& aLockSize);
-- bool CommitImageSurface(const LayoutDeviceIntRegion& aRegion);
-+ bool CommitImageSurfaceToWaylandBuffer(const LayoutDeviceIntRegion& aRegion);
-+ void CommitWaylandBuffer();
-
- // TODO: Do we need to hold a reference to nsWindow object?
- nsWindow* mWindow;
- nsWaylandDisplay* mWaylandDisplay;
-- WindowBackBuffer* mFrontBuffer;
-- WindowBackBuffer* mBackBuffer;
-+ WindowBackBuffer* mWaylandBuffer;
-+ LayoutDeviceIntRegion mWaylandBufferDamage;
-+ WindowBackBuffer* mBackupBuffer;
- RefPtr<gfxImageSurface> mImageSurface;
- wl_callback* mFrameCallback;
-- wl_surface* mFrameCallbackSurface;
-+ wl_surface* mLastCommittedSurface;
- MessageLoop* mDisplayThreadMessageLoop;
-- bool mDirectWlBufferDraw;
-- bool mDelayedCommit;
-- bool mFullScreenDamage;
-+ WindowSurfaceWayland** mDelayedCommitHandle;
-+ bool mDrawToWaylandBufferDirectly;
-+ bool mPendingCommit;
-+ bool mWaylandBufferFullScreenDamage;
- bool mIsMainThread;
-+ bool mNeedScaleFactorUpdate;
- };
-
- } // namespace widget
diff --git a/rb244676.patch b/rb244676.patch
deleted file mode 100644
index 8141e1d..0000000
--- a/rb244676.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff --git a/toolkit/system/gnome/nsGIOService.cpp b/toolkit/system/gnome/nsGIOService.cpp
---- a/toolkit/system/gnome/nsGIOService.cpp
-+++ b/toolkit/system/gnome/nsGIOService.cpp
-@@ -521,16 +521,22 @@ nsGIOService::GetAppForMimeType(const ns
- return NS_OK;
- }
-
- char *content_type =
- g_content_type_from_mime_type(PromiseFlatCString(aMimeType).get());
- if (!content_type)
- return NS_ERROR_FAILURE;
-
-+ // GIO returns "unknown" appinfo for the application/octet-stream, which is
-+ // useless. It's better to fallback to create appinfo from file extension later.
-+ if (g_content_type_is_unknown(content_type)) {
-+ return NS_ERROR_NOT_AVAILABLE;
-+ }
-+
- GAppInfo *app_info = g_app_info_get_default_for_type(content_type, false);
- if (app_info) {
- nsGIOMimeApp *mozApp = new nsGIOMimeApp(app_info);
- NS_ENSURE_TRUE(mozApp, NS_ERROR_OUT_OF_MEMORY);
- NS_ADDREF(*aApp = mozApp);
- } else {
- g_free(content_type);
- return NS_ERROR_FAILURE;
-
diff --git a/rb246462.patch b/rb246462.patch
deleted file mode 100644
index c1d098e..0000000
--- a/rb246462.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-diff --git a/uriloader/exthandler/nsExternalHelperAppService.cpp b/uriloader/exthandler/nsExternalHelperAppService.cpp
---- a/uriloader/exthandler/nsExternalHelperAppService.cpp
-+++ b/uriloader/exthandler/nsExternalHelperAppService.cpp
-@@ -2590,26 +2590,21 @@ NS_IMETHODIMP nsExternalHelperAppService
- }
- }
- }
- }
-
- // (3) No match yet. Ask extras.
- if (!found) {
- rv = NS_ERROR_FAILURE;
--#ifdef XP_WIN
-- /* XXX Gross hack to wallpaper over the most common Win32
-- * extension issues caused by the fix for bug 116938. See bug
-- * 120327, comment 271 for why this is needed. Not even sure we
-- * want to remove this once we have fixed all this stuff to work
-- * right; any info we get from extras on this type is pretty much
-- * useless....
-- */
-+ // Getting info for application/octet-stream content-type from extras
-+ // does not make a sense because this tends to open all octet-streams
-+ // as Binary file with exe, com or bin extension regardless the real
-+ // extension.
- if (!typeToUse.Equals(APPLICATION_OCTET_STREAM, nsCaseInsensitiveCStringComparator()))
--#endif
- rv = FillMIMEInfoForMimeTypeFromExtras(typeToUse, *_retval);
- LOG(("Searched extras (by type), rv 0x%08" PRIX32 "\n", static_cast<uint32_t>(rv)));
- // If that didn't work out, try file extension from extras
- if (NS_FAILED(rv) && !aFileExt.IsEmpty()) {
- rv = FillMIMEInfoForExtensionFromExtras(aFileExt, *_retval);
- LOG(("Searched extras (by ext), rv 0x%08" PRIX32 "\n", static_cast<uint32_t>(rv)));
- }
- // If that still didn't work, set the file description to "ext File"
-diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
---- a/uriloader/exthandler/unix/nsOSHelperAppService.cpp
-+++ b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
-@@ -26,16 +26,17 @@
- #include "nsISupportsPrimitives.h"
- #include "nsCRT.h"
- #include "nsDirectoryServiceDefs.h"
- #include "nsDirectoryServiceUtils.h"
- #include "ContentHandlerService.h"
- #include "prenv.h" // for PR_GetEnv()
- #include "nsAutoPtr.h"
- #include "mozilla/Preferences.h"
-+#include "nsMimeTypes.h"
-
- using namespace mozilla;
-
- #define LOG(args) MOZ_LOG(mLog, mozilla::LogLevel::Debug, args)
- #define LOG_ENABLED() MOZ_LOG_TEST(mLog, mozilla::LogLevel::Debug)
-
- static nsresult
- FindSemicolon(nsAString::const_iterator& aSemicolon_iter,
-@@ -1445,17 +1446,22 @@ nsOSHelperAppService::GetFromType(const
- }
-
-
- already_AddRefed<nsIMIMEInfo>
- nsOSHelperAppService::GetMIMEInfoFromOS(const nsACString& aType,
- const nsACString& aFileExt,
- bool *aFound) {
- *aFound = true;
-- RefPtr<nsMIMEInfoBase> retval = GetFromType(PromiseFlatCString(aType));
-+ RefPtr<nsMIMEInfoBase> retval;
-+ // Fallback to lookup by extension when generic 'application/octet-stream'
-+ // content type is received.
-+ if (!aType.EqualsLiteral(APPLICATION_OCTET_STREAM)) {
-+ retval = GetFromType(PromiseFlatCString(aType));
-+ }
- bool hasDefault = false;
- if (retval)
- retval->GetHasDefaultHandler(&hasDefault);
- if (!retval || !hasDefault) {
- RefPtr<nsMIMEInfoBase> miByExt = GetFromExtension(PromiseFlatCString(aFileExt));
- // If we had no extension match, but a type match, use that
- if (!miByExt && retval)
- return retval.forget();
-
diff --git a/sources b/sources
index d6146f7..38fdb70 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (firefox-62.0.3.source.tar.xz) = 487bb7791284367158c79cf7918fecf3d598627a6416e679aeb5d22626089aeffe07762fa2389819ba881c90ece1c5a83cf2d85b2def15b8d5ba0ed1c498b527
-SHA512 (firefox-langpacks-62.0.3-20181002.tar.xz) = 3a5347689753edf7bc8ba8190597e5a147347a26eacedb4dde811e9b0e75f56d4c011188bdd025f55843f318a652ce1d536d5c35c40a848867b12b0e286035a3
+SHA512 (firefox-63.0.source.tar.xz) = 1e2cd61f84e5a9cdf0eee6fb7b84986a0a7f8bcdf72aa1eb491e178920e8ef80f158c7421cdc973acaff5e27b9901838c4d564f7d8235f428391241144794952
+SHA512 (firefox-langpacks-63.0-20181018.tar.xz) = 340d4b40181cfe8aa0c0a5988651d982836dc5292b70e9942235219497ce36af099a733b00934d5c494134b29a971752da30166472e1e919d9419025f4cc5f94
bgstack15