summaryrefslogtreecommitdiff
path: root/mozilla-1668771.patch
diff options
context:
space:
mode:
Diffstat (limited to 'mozilla-1668771.patch')
-rw-r--r--mozilla-1668771.patch41
1 files changed, 41 insertions, 0 deletions
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 <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.
+
bgstack15