Paste P420

Masterwork From Distant Lands
ActivePublic

Authored by davidedmundson on Jun 23 2019, 11:30 AM.
From 4a73ffdcd8e48a43478dc4dbfb63ea5a2dc73c4c Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org>
Date: Sun, 23 Jun 2019 13:25:16 +0200
Subject: [PATCH] Reset frame callback timer when hiding a window
If we hide a window whilst a compositor has a pending frame to show,
it's possible the compositor will not render the frmae and not return
the callback.
If this happens on the next window expose we can be left with
mFrameCallbackTimedOut still true causing isExposed() to be false and us
to not send the next buffer.
Change-Id: I507410415d1a930fd5fa736412055e68fdf6c1d3
---
src/client/qwaylandwindow.cpp | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index 8b2c1227..f1e337a6 100644
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@ -245,6 +245,13 @@ void QWaylandWindow::reset(bool sendDestroyEvent)
mFrameCallback = nullptr;
}
+ if (mFrameCallbackTimerId != -1) {
+ killTimer(mFrameCallbackTimerId);
+ mFrameCallbackTimerId = -1;
+ }
+ mWaitingForFrameCallback = false;
+ mFrameCallbackTimedOut = false;
+
mMask = QRegion();
mQueuedBuffer = nullptr;
}
--
2.22.0
davidedmundson edited the content of this paste. (Show Details)Jun 23 2019, 11:30 AM
davidedmundson changed the title of this paste from untitled to Masterwork From Distant Lands.