aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarkko Koivikko <jarkko.koivikko@code-q.fi>2022-02-17 16:26:33 +0200
committerJarkko Koivikko <jarkko.koivikko@code-q.fi>2022-03-30 06:43:06 +0200
commitbfd56b4bb0cb980f3d1a51fe95f99cbf7329596e (patch)
tree275d58842df00362ea74b74de096a884abb83091
parent45f69e8478a43cf606e52063ee37fbbb42132146 (diff)
Prevent Trace objects from being garbage collected
Explicitly set QQmlEngine::CppOwnership to created Trace objects. Change-Id: Ie1bc0635f69eed07de859321e866bfadf7870797 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
-rw-r--r--src/virtualkeyboard/qvirtualkeyboardinputengine.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp b/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp
index 91abf4c4..4f7c2967 100644
--- a/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp
+++ b/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp
@@ -35,6 +35,8 @@
#include <QtVirtualKeyboard/qvirtualkeyboardtrace.h>
#include <QtVirtualKeyboard/private/virtualkeyboarddebug_p.h>
+#include <QQmlContext>
+#include <QQmlEngine>
#include <QTimerEvent>
#include <QtCore/private/qobject_p.h>
@@ -539,8 +541,14 @@ QVirtualKeyboardTrace *QVirtualKeyboardInputEngine::traceBegin(
if (!d->inputMethod->patternRecognitionModes().contains(patternRecognitionMode))
return nullptr;
QVirtualKeyboardTrace *trace = d->inputMethod->traceBegin(traceId, patternRecognitionMode, traceCaptureDeviceInfo, traceScreenInfo);
- if (trace)
+ if (trace) {
+ if (QQmlContext *context = QQmlEngine::contextForObject(this)) {
+ if (QQmlEngine *engine = context->engine()) {
+ engine->setObjectOwnership(trace, QQmlEngine::CppOwnership);
+ }
+ }
trace->setTraceId(traceId);
+ }
return trace;
}