diff options
| author | Soheil Armin <soheil.armin@qt.io> | 2024-02-22 12:27:04 +0200 |
|---|---|---|
| committer | Soheil Armin <soheil.armin@qt.io> | 2024-02-26 20:21:17 +0200 |
| commit | deb80fcf2f45794b8cacb25b643ea7f00a152d5c (patch) | |
| tree | 262171355826c11ce89f7644f4fd06192e40d3e7 /src/quick/platform/android/qandroidquickviewembedding.cpp | |
| parent | 04b061b8b1a2028d9a2fc8910ba48d84082106af (diff) | |
Android: Invoke SignalHandler interface from UI thread
Calling SignalHandler.onSignalEmitted() from Qt thread forces the
user to execute UI changes by using Activity.runOnUiThread().
This can be avoided if onSignalEmitted gets invoked from Android UI
thread.
Pick-to: 6.7
Task-number: QTBUG-119751
Change-Id: I276d240e4ca389debb6ae68041b41aac0b3bd01c
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/quick/platform/android/qandroidquickviewembedding.cpp')
| -rw-r--r-- | src/quick/platform/android/qandroidquickviewembedding.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/quick/platform/android/qandroidquickviewembedding.cpp b/src/quick/platform/android/qandroidquickviewembedding.cpp index 57cbb45a38..9e3de6957e 100644 --- a/src/quick/platform/android/qandroidquickviewembedding.cpp +++ b/src/quick/platform/android/qandroidquickviewembedding.cpp @@ -3,6 +3,7 @@ #include <QtQuick/private/qandroidquickviewembedding_p.h> +#include <QtCore/qcoreapplication.h> #include <QtCore/qjnienvironment.h> #include <QtCore/qjniobject.h> #include <QtCore/qjniarray.h> @@ -392,10 +393,12 @@ namespace QtAndroidQuickViewEmbedding signalMethod.methodSignature().constData(), javaArgType.constData()); } - listenerInfo.listener - .callMethod<void, jstring, jobject>("onSignalEmitted", - jSignalMethodName.object<jstring>(), - jValue.object()); + QNativeInterface::QAndroidApplication::runOnAndroidMainThread( + [listenerInfo, jSignalMethodName, jValue]() { + listenerInfo.listener.callMethod<void, jstring, jobject>("onSignalEmitted", + jSignalMethodName.object<jstring>(), + jValue.object()); + }); } } |
