diff options
author | Mauro Persano <mauro.persano@kdab.com> | 2017-10-18 08:23:19 -0200 |
---|---|---|
committer | Mauro Persano <mauro.persano@kdab.com> | 2018-02-02 10:30:33 +0000 |
commit | 96ce1288ba0bbc4682637712122da6adb1ee6eaf (patch) | |
tree | aac1ed5f748400df64a2cc2fb88db42daf09de5e /src/render/materialsystem/qparameter.cpp | |
parent | 8fa23602cff47de6d19d05a8428a8e753bf73d61 (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.cpp | 27 |
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; } |