aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/platform/android/qandroidquickviewembedding.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/platform/android/qandroidquickviewembedding.cpp')
-rw-r--r--src/quick/platform/android/qandroidquickviewembedding.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/quick/platform/android/qandroidquickviewembedding.cpp b/src/quick/platform/android/qandroidquickviewembedding.cpp
index 0714b1fae4..293667f23b 100644
--- a/src/quick/platform/android/qandroidquickviewembedding.cpp
+++ b/src/quick/platform/android/qandroidquickviewembedding.cpp
@@ -100,7 +100,6 @@ namespace QtAndroidQuickViewEmbedding
return;
}
- QMetaProperty metaProperty = rootMetaObject->property(propertyIndex);
const QJniObject propertyValue(value);
const QVariant variantToWrite = QAndroidTypeConverter::toQVariant(propertyValue);
@@ -108,7 +107,12 @@ namespace QtAndroidQuickViewEmbedding
qWarning("Setting the property type of %s is not supported.",
propertyValue.className().data());
} else {
- metaProperty.write(rootObject, variantToWrite);
+ QMetaObject::invokeMethod(rootObject,
+ [metaProperty = rootMetaObject->property(propertyIndex),
+ rootObject = rootObject,
+ variantToWrite] {
+ metaProperty.write(rootObject, variantToWrite);
+ });
}
}
@@ -134,7 +138,15 @@ namespace QtAndroidQuickViewEmbedding
}
QMetaProperty metaProperty = rootMetaObject->property(propertyIndex);
- const QVariant propertyValue = metaProperty.read(rootObject);
+ QVariant propertyValue;
+ if (QCoreApplication::instance()->thread()->isCurrentThread()) {
+ propertyValue = metaProperty.read(rootObject);
+ } else {
+ QMetaObject::invokeMethod(rootObject,
+ [&propertyValue, &metaProperty, rootObject = rootObject] {
+ propertyValue = metaProperty.read(rootObject);
+ }, Qt::BlockingQueuedConnection);
+ }
jobject jObject = QAndroidTypeConverter::toJavaObject(propertyValue, env);
if (!jObject) {
qWarning("Property %s cannot be converted to a supported Java data type.",