268ae0028c
The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/firefox#c8daf71be4963daab37d810024e0a6e7f04cf2dd
42 lines
1.6 KiB
Diff
42 lines
1.6 KiB
Diff
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.
|
|
|