diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | build-disable-elfhack.patch | 16 | ||||
-rw-r--r-- | firefox.spec | 531 | ||||
-rw-r--r-- | mozilla-1170092.patch | 43 | ||||
-rw-r--r-- | mozilla-1444437.patch | 183 | ||||
-rw-r--r-- | mozilla-1467128.patch | 352 | ||||
-rw-r--r-- | mozilla-wayland-trunk.patch | 519 | ||||
-rw-r--r-- | rb244676.patch | 27 | ||||
-rw-r--r-- | rb246462.patch | 80 | ||||
-rw-r--r-- | sources | 4 |
10 files changed, 41 insertions, 1716 deletions
@@ -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(); - @@ -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 |