aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/platform/android/qandroidquickviewembedding.cpp
diff options
context:
space:
mode:
authorSoheil Armin <soheil.armin@qt.io>2024-02-22 12:27:04 +0200
committerSoheil Armin <soheil.armin@qt.io>2024-02-26 20:21:17 +0200
commitdeb80fcf2f45794b8cacb25b643ea7f00a152d5c (patch)
tree262171355826c11ce89f7644f4fd06192e40d3e7 /src/quick/platform/android/qandroidquickviewembedding.cpp
parent04b061b8b1a2028d9a2fc8910ba48d84082106af (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.cpp11
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());
+ });
}
}