diff --git a/firefox.spec b/firefox.spec index 05c4dd0..e4a2d18 100644 --- a/firefox.spec +++ b/firefox.spec @@ -110,7 +110,7 @@ ExcludeArch: s390x Summary: Mozilla Firefox Web browser Name: firefox Version: 81.0.1 -Release: 3%{?dist} +Release: 4%{?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 @@ -178,6 +178,7 @@ Patch407: mozilla-1667096.patch Patch408: mozilla-1663844.patch Patch409: mozilla-1640567.patch Patch410: mozilla-1661192.patch +Patch411: mozilla-1668771.patch # Wayland specific upstream patches Patch574: firefox-pipewire-0-2.patch @@ -389,6 +390,7 @@ This package contains results of tests executed during build. %patch408 -p1 -b .1663844 %patch409 -p1 -b .1640567 %patch410 -p1 -b .1661192 +%patch411 -p1 -b .1668771 # Wayland specific upstream patches %if 0%{?fedora} < 32 @@ -978,6 +980,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Thu Oct 2 2020 Martin Stransky - 81.0.1-4 +- Added fix for mozbz#1668771 + * Thu Oct 1 2020 Martin Stransky - 81.0.1-3 - Added fix for mozbz#1661192 diff --git a/mozilla-1668771.patch b/mozilla-1668771.patch new file mode 100644 index 0000000..4b3cb3e --- /dev/null +++ b/mozilla-1668771.patch @@ -0,0 +1,41 @@ +changeset: 552978:b50cb0696eef +tag: tip +parent: 552976:2ce12e3e063c +user: stransky +date: Fri Oct 02 12:19:53 2020 +0200 +files: widget/gtk/WindowSurfaceWayland.cpp +description: +Bug 1668771 [Wayland] Use timeout for frame callbacks for basic compositor, r?jhorak + +Differential Revision: https://phabricator.services.mozilla.com/D92200 + + +diff --git a/widget/gtk/WindowSurfaceWayland.cpp b/widget/gtk/WindowSurfaceWayland.cpp +--- a/widget/gtk/WindowSurfaceWayland.cpp ++++ b/widget/gtk/WindowSurfaceWayland.cpp +@@ -37,6 +37,9 @@ extern mozilla::LazyLogModule gWidgetWay + // Maximal compositing timeout it miliseconds + #define COMPOSITING_TIMEOUT 200 + ++// Maximal timeout between frame callbacks ++#define FRAME_CALLBACK_TIMEOUT 20 ++ + namespace mozilla { + namespace widget { + +@@ -941,8 +944,12 @@ void WindowSurfaceWayland::CommitWayland + if (waylandSurface == mLastCommittedSurface) { + LOGWAYLAND((" [%p] wait for frame callback.\n", (void*)this)); + // We have an active frame callback pending from our recent surface. +- // It means we should defer the commit to FrameCallbackHandler(). +- return; ++ // It means we should defer the commit to FrameCallbackHandler(), ++ // but only if we're under frame callback timeout range. ++ if (mLastCommitTime && (g_get_monotonic_time() / 1000) - mLastCommitTime < ++ FRAME_CALLBACK_TIMEOUT) { ++ 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. +