summaryrefslogtreecommitdiff
path: root/dev-qt
diff options
context:
space:
mode:
authorIonen Wolkens <ionen@gentoo.org>2023-08-17 18:50:11 -0400
committerIonen Wolkens <ionen@gentoo.org>2023-08-17 19:19:03 -0400
commit69c8497c982a6e82cd1c1762e27c3cdfe52436ed (patch)
tree05335fe09547b1173b3c4af7f9f6c82f2ab03539 /dev-qt
parentmetadata/install-qa-check.d: Check for subdirs in /bin and its friends (diff)
downloadgentoo-69c8497c982a6e82cd1c1762e27c3cdfe52436ed.tar.gz
gentoo-69c8497c982a6e82cd1c1762e27c3cdfe52436ed.tar.bz2
gentoo-69c8497c982a6e82cd1c1762e27c3cdfe52436ed.zip
dev-qt/qtwayland: backport segfault fix with drag&drop
Notably manifests itself with qutebrowser. Not very tested but is just a simple null check and so no worries. Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
Diffstat (limited to 'dev-qt')
-rw-r--r--dev-qt/qtwayland/files/qtwayland-6.5.2-drag-drop-segfault.patch38
-rw-r--r--dev-qt/qtwayland/qtwayland-6.5.2-r1.ebuild (renamed from dev-qt/qtwayland/qtwayland-6.5.2.ebuild)2
2 files changed, 40 insertions, 0 deletions
diff --git a/dev-qt/qtwayland/files/qtwayland-6.5.2-drag-drop-segfault.patch b/dev-qt/qtwayland/files/qtwayland-6.5.2-drag-drop-segfault.patch
new file mode 100644
index 000000000000..d19522c4b8ef
--- /dev/null
+++ b/dev-qt/qtwayland/files/qtwayland-6.5.2-drag-drop-segfault.patch
@@ -0,0 +1,38 @@
+Regression in 6.5.2 that is fixed >=6.5.3.
+https://bugreports.qt.io/browse/QTBUG-115757
+https://github.com/qutebrowser/qutebrowser/issues/7827
+
+https://github.com/qt/qtwayland/commit/02e9e0a2d4538eb2b3c26d3137228f8f501bcf7f
+From: David Edmundson <davidedmundson@kde.org>
+Date: Wed, 7 Jun 2023 22:12:15 +0100
+Subject: [PATCH] client: Fix crash on dnd updates after client facing drag
+ ends
+
+A platform drag and a application-facing drag have two different
+lifespans.
+
+The platform drag lasts until all mimedata is transferred and the client
+receiving the drops marks it as finished.
+
+The application facing QDrag lasts until the client deletes it. We can
+get a crash if we get updates during this time.
+
+The drop event is guarded, but not the action negotiation.
+
+Fixes: QTBUG-115757
+Change-Id: Ib9c047f04d65883105d4cd3f169637d0e038a63f
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 22daca49b807fefba58113a06b86df4274e49f62)
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+--- a/src/client/qwaylanddatadevice.cpp
++++ b/src/client/qwaylanddatadevice.cpp
+@@ -97,6 +97,9 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, Qt::DropActions supporte
+ connect(m_dragSource.data(), &QWaylandDataSource::cancelled, this, &QWaylandDataDevice::dragSourceCancelled);
+ connect(m_dragSource.data(), &QWaylandDataSource::dndResponseUpdated, this, [this](bool accepted, Qt::DropAction action) {
+ auto drag = static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag());
++ if (!drag->currentDrag()) {
++ return;
++ }
+ // in old versions drop action is not set, so we guess
+ if (m_dragSource->version() < 3) {
+ drag->setResponse(accepted);
diff --git a/dev-qt/qtwayland/qtwayland-6.5.2.ebuild b/dev-qt/qtwayland/qtwayland-6.5.2-r1.ebuild
index 14d6b705e8ef..4fbc8c272b2c 100644
--- a/dev-qt/qtwayland/qtwayland-6.5.2.ebuild
+++ b/dev-qt/qtwayland/qtwayland-6.5.2-r1.ebuild
@@ -20,3 +20,5 @@ DEPEND="
x11-libs/libxkbcommon
"
RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}/${P}-drag-drop-segfault.patch" )