diff options
author | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2022-02-17 16:26:33 +0200 |
---|---|---|
committer | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2022-03-30 06:43:06 +0200 |
commit | bfd56b4bb0cb980f3d1a51fe95f99cbf7329596e (patch) | |
tree | 275d58842df00362ea74b74de096a884abb83091 /src | |
parent | 45f69e8478a43cf606e52063ee37fbbb42132146 (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>
Diffstat (limited to 'src')
-rw-r--r-- | src/virtualkeyboard/qvirtualkeyboardinputengine.cpp | 10 |
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; } |