summaryrefslogtreecommitdiffstats
path: root/src/render/materialsystem/qparameter.cpp
diff options
context:
space:
mode:
authorMauro Persano <mauro.persano@kdab.com>2017-10-18 08:23:19 -0200
committerMauro Persano <mauro.persano@kdab.com>2018-02-02 10:30:33 +0000
commit96ce1288ba0bbc4682637712122da6adb1ee6eaf (patch)
treeaac1ed5f748400df64a2cc2fb88db42daf09de5e /src/render/materialsystem/qparameter.cpp
parent8fa23602cff47de6d19d05a8428a8e753bf73d61 (diff)
Fix array of textures in shader parameter
Task-number: QTBUG-61759 Change-Id: I2c61f9cf41124816d10da90783c7fb9ff6088fc4 Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/render/materialsystem/qparameter.cpp')
-rw-r--r--src/render/materialsystem/qparameter.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/render/materialsystem/qparameter.cpp b/src/render/materialsystem/qparameter.cpp
index b9bfa44e7..2b2dd29d5 100644
--- a/src/render/materialsystem/qparameter.cpp
+++ b/src/render/materialsystem/qparameter.cpp
@@ -179,13 +179,30 @@ QParameterPrivate::QParameterPrivate()
{
}
+namespace {
+
+/*! \internal */
+inline QVariant toBackendValue(const QVariant &v)
+{
+ if (auto nodeValue = v.value<Qt3DCore::QNode*>())
+ return QVariant::fromValue(nodeValue->id());
+ return v;
+}
+
+} // anonymous
+
void QParameterPrivate::setValue(const QVariant &v)
{
- Qt3DCore::QNode *nodeValue = v.value<Qt3DCore::QNode *>();
- if (nodeValue != nullptr)
- m_backendValue = QVariant::fromValue(nodeValue->id());
- else
- m_backendValue = v;
+ if (v.type() == QVariant::List) {
+ QSequentialIterable iterable = v.value<QSequentialIterable>();
+ QVariantList variants;
+ variants.reserve(iterable.size());
+ for (const auto &v : iterable)
+ variants.append(toBackendValue(v));
+ m_backendValue = variants;
+ } else {
+ m_backendValue = toBackendValue(v);
+ }
m_value = v;
}