9e3fa6e6f7
These patches are intended to make things work nicely due to regressions introduced in qt5.12.4. I've tested them in QEMU and they seem to work fine. See: https://mail.kde.org/pipermail/kde-distro-packagers/2019-July/000379.html
40 lines
1.3 KiB
Diff
40 lines
1.3 KiB
Diff
From a4e6f88f50d1a1dd56df77ce8b07b98aceb20ddc Mon Sep 17 00:00:00 2001
|
|
From: David Edmundson <davidedmundson@kde.org>
|
|
Date: Sun, 23 Jun 2019 13:25:16 +0200
|
|
Subject: [PATCH] Client: 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 frame and not return
|
|
the callback.
|
|
|
|
If this happens on the next window expose we can be left with
|
|
mFrameCallbackTimedOut still true causing isExposed() to remain false
|
|
and us to not send the next buffer when we later show the window again.
|
|
|
|
Change-Id: I507410415d1a930fd5fa736412055e68fdf6c1d3
|
|
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
|
|
---
|
|
src/client/qwaylandwindow.cpp | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
|
index 7c8ecadaa..2b243bc44 100644
|
|
--- a/src/client/qwaylandwindow.cpp
|
|
+++ b/src/client/qwaylandwindow.cpp
|
|
@@ -254,6 +254,13 @@ void QWaylandWindow::reset(bool sendDestroyEvent)
|
|
mFrameCallback = nullptr;
|
|
}
|
|
|
|
+ int timerId = mFrameCallbackTimerId.fetchAndStoreOrdered(-1);
|
|
+ if (timerId != -1) {
|
|
+ killTimer(timerId);
|
|
+ }
|
|
+ mWaitingForFrameCallback = false;
|
|
+ mFrameCallbackTimedOut = false;
|
|
+
|
|
mMask = QRegion();
|
|
mQueuedBuffer = nullptr;
|
|
}
|
|
--
|
|
2.16.3
|
|
|