Add fix for mozbz#1668771

This commit is contained in:
Martin Stransky 2020-10-02 12:27:34 +02:00
parent 3b52fb7c93
commit 1bc542f07d
2 changed files with 47 additions and 1 deletions

View File

@ -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 <stransky@redhat.com> - 81.0.1-4
- Added fix for mozbz#1668771
* Thu Oct 1 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-3
- Added fix for mozbz#1661192

41
mozilla-1668771.patch Normal file
View File

@ -0,0 +1,41 @@
changeset: 552978:b50cb0696eef
tag: tip
parent: 552976:2ce12e3e063c
user: stransky <stransky@redhat.com>
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.