Updated to 63.0

This commit is contained in:
Martin Stransky 2018-10-18 13:43:49 +02:00
parent a32c4f15e8
commit fdd51631aa
10 changed files with 41 additions and 1716 deletions

2
.gitignore vendored
View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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"

View File

@ -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;
};

View File

@ -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 */

View File

@ -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

View File

@ -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;

View File

@ -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();

View File

@ -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