qtwayland: Mitigate crash when platforminputcontext library is missing 23/26023/3
authorMarius Vlad <marius.vlad@collabora.com>
Fri, 5 Feb 2021 12:29:47 +0000 (14:29 +0200)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tue, 9 Feb 2021 13:57:36 +0000 (13:57 +0000)
Turns out that in the case a plug-in library is missing (which is the actual
root cause of this problem) we do not properly check if it can
use it, leading to a crash when attempting to make of use QT_LOGGING_RULES.

This patch mitigates that and allows to debug Qt w/ the help of
QT_LOGGING_RULES.

Bug-AGL: SPEC-3359

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: If8c0f0f030c7ca53aca701a54ceea317cc7fd695

recipes-qt/qt/qtwayland/0001-client-qwaylandintegration-Do-not-attempt-to-use-the.patch [new file with mode: 0644]
recipes-qt/qt/qtwayland_agldemo.inc

diff --git a/recipes-qt/qt/qtwayland/0001-client-qwaylandintegration-Do-not-attempt-to-use-the.patch b/recipes-qt/qt/qtwayland/0001-client-qwaylandintegration-Do-not-attempt-to-use-the.patch
new file mode 100644 (file)
index 0000000..2d578e3
--- /dev/null
@@ -0,0 +1,37 @@
+From 0c8212273ac0fcd8cd954bd43075901a80ab3476 Mon Sep 17 00:00:00 2001
+From: Marius Vlad <marius.vlad@collabora.com>
+Date: Fri, 29 Jan 2021 12:31:19 +0200
+Subject: [PATCH] client/qwaylandintegration: Do not attempt to use the
+ inputContext()
+
+We assume loading the platforminputcompose library no matter what, but
+in case that doesn't happen (the library effectively not found), no necessary
+checks are made in order to make sure that indeed succeed.
+
+This patch mitigates that, and with it, it allows to use the QT_LOGGING_RULES,
+which is used to trigger the issue.
+
+Bug-AGL: SPEC-3359
+
+Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
+---
+ src/client/qwaylandintegration.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
+index f6a80e18..5568485c 100644
+--- a/src/client/qwaylandintegration.cpp
++++ b/src/client/qwaylandintegration.cpp
+@@ -503,7 +503,8 @@ void QWaylandIntegration::reconfigureInputContext()
+     // is why we need to check here which input context actually is being used.
+     mDisplay->mUsingInputContextFromCompositor = qobject_cast<QWaylandInputContext *>(mInputContext.data());
+-    qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className();
++    if (mDisplay->mUsingInputContextFromCompositor)
++          qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className();
+ }
+ QWaylandShellIntegration *QWaylandIntegration::createShellIntegration(const QString &integrationName)
+-- 
+2.28.0
+
index c753725..61d0393 100644 (file)
@@ -14,5 +14,6 @@ FILESEXTRAPATHS_append := ":${THISDIR}/qtwayland"
 
 SRC_URI_append = "\
     file://0010-Added-manifest-file-according-to-smack-3-domain-mode.patch \
+    file://0001-client-qwaylandintegration-Do-not-attempt-to-use-the.patch \
     "