commit:     7e09ceab8329a85fe65c439afb94d85f68c8d53e
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 10 12:51:05 2021 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Fri Dec 10 13:19:02 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7e09ceab

dev-qt/qtwayland: Try to fix crashes on monitor disconnects

See also: https://codereview.qt-project.org/c/qt/qtwayland/+/381271
KDE-bug: https://bugs.kde.org/show_bug.cgi?id=438839#c53
Package-Manager: Portage-3.0.29, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 ...-fix-crash-when-iterating-through-outputs.patch | 36 ++++++++++++++++++++++
 dev-qt/qtwayland/qtwayland-5.15.2-r16.ebuild       |  4 +++
 2 files changed, 40 insertions(+)

diff --git 
a/dev-qt/qtwayland/files/qtwayland-5.15.2-fix-crash-when-iterating-through-outputs.patch
 
b/dev-qt/qtwayland/files/qtwayland-5.15.2-fix-crash-when-iterating-through-outputs.patch
new file mode 100644
index 000000000000..cf37737e0226
--- /dev/null
+++ 
b/dev-qt/qtwayland/files/qtwayland-5.15.2-fix-crash-when-iterating-through-outputs.patch
@@ -0,0 +1,36 @@
+From 46ed85a80b28d519cf5887bbdce55d1bf57886c3 Mon Sep 17 00:00:00 2001
+From: David Edmundson <[email protected]>
+Date: Sun, 14 Nov 2021 13:54:19 +0000
+Subject: [PATCH] Client: Avoid processing of events when showing windows
+
+The only time we want to dispatch events from the wayland socket is when
+the application is waiting for external events. Doing so at any other
+time will cause unpredictable behavior in client code.
+
+This caused a crash downstream where we had outputs get altered whilst
+itterating through outputs, which shouldn't happen.
+
+There is no benefit to flushing here, it won't make anything appear
+faster as we haven't attached the buffer yet.
+
+Change-Id: Ie13eae4012dab96a93d8810f468d1343402b8c28
+Reviewed-by: Qt CI Bot <[email protected]>
+Reviewed-by: Aleix Pol Gonzalez <[email protected]>
+---
+ src/client/qwaylandwindow.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index 635c92a08..b0d1c0d1c 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -477,7 +477,6 @@ void QWaylandWindow::setVisible(bool visible)
+         if (window()->type() == Qt::Popup || window()->type() == Qt::ToolTip)
+             activePopups << this;
+         initWindow();
+-        mDisplay->flushRequests();
+ 
+         setGeometry(windowGeometry());
+         // Don't flush the events here, or else the newly visible window may 
start drawing, but since
+-- 
+2.16.3

diff --git a/dev-qt/qtwayland/qtwayland-5.15.2-r16.ebuild 
b/dev-qt/qtwayland/qtwayland-5.15.2-r16.ebuild
index 528a0d8a1745..60bd8391f0d6 100644
--- a/dev-qt/qtwayland/qtwayland-5.15.2-r16.ebuild
+++ b/dev-qt/qtwayland/qtwayland-5.15.2-r16.ebuild
@@ -33,6 +33,10 @@ BDEPEND="
        dev-util/wayland-scanner
 "
 
+PATCHES=(
+       "${FILESDIR}"/${P}-fix-crash-when-iterating-through-outputs.patch # 
KDE-bug 438839
+)
+
 src_configure() {
        local myqmakeargs=(
                --

Reply via email to