diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2016-05-04 15:37:49 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-05-04 20:13:03 +0000 |
commit | 4cf737a0f1cc05ff9baa4df329761d65f69e340c (patch) | |
tree | 26e7b413f561dfa154761789ab1a02a90bfe604e | |
parent | 2a8920969ae00a8feb7117f77abb8e15d480d6fa (diff) |
Send shader data's property reader to the backend
Somehow got lost during the transition to the no cloning approach.
Because of that, no property updates where processed anymore in shader
data backend instances.
Change-Id: I18edd5f71a711765344041c62b69b4772b11b75d
Task-number: QTBUG-53161
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | src/render/materialsystem/qshaderdata.cpp | 4 | ||||
-rw-r--r-- | src/render/materialsystem/qshaderdata_p.h | 1 | ||||
-rw-r--r-- | src/render/materialsystem/shaderdata.cpp | 2 |
3 files changed, 7 insertions, 0 deletions
diff --git a/src/render/materialsystem/qshaderdata.cpp b/src/render/materialsystem/qshaderdata.cpp index 062b28549..9ce4b3fb3 100644 --- a/src/render/materialsystem/qshaderdata.cpp +++ b/src/render/materialsystem/qshaderdata.cpp @@ -90,9 +90,13 @@ QShaderData::QShaderData(QShaderDataPrivate &dd, QNode *parent) Qt3DCore::QNodeCreatedChangeBasePtr QShaderData::createNodeCreationChange() const { + Q_D(const QShaderData); + auto creationChange = Qt3DCore::QNodeCreatedChangePtr<QShaderDataData>::create(this); QShaderDataData &data = creationChange->data; + data.propertyReader = d->m_propertyReader; + const QMetaObject *metaObj = metaObject(); const int propertyOffset = QShaderData::staticMetaObject.propertyOffset(); const int propertyCount = metaObj->propertyCount(); diff --git a/src/render/materialsystem/qshaderdata_p.h b/src/render/materialsystem/qshaderdata_p.h index bbaa3b765..8e5582310 100644 --- a/src/render/materialsystem/qshaderdata_p.h +++ b/src/render/materialsystem/qshaderdata_p.h @@ -99,6 +99,7 @@ public: struct QShaderDataData { QVector<QPair<QByteArray, QVariant>> properties; + PropertyReaderInterfacePtr propertyReader; }; } // namespace Qt3DRender diff --git a/src/render/materialsystem/shaderdata.cpp b/src/render/materialsystem/shaderdata.cpp index 179ea4300..58879f72e 100644 --- a/src/render/materialsystem/shaderdata.cpp +++ b/src/render/materialsystem/shaderdata.cpp @@ -84,6 +84,8 @@ void ShaderData::initializeFromPeer(const QNodeCreatedChangeBasePtr &change) const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QShaderDataData>>(change); const QShaderDataData &data = typedChange->data; + m_propertyReader = data.propertyReader; + for (const QPair<QByteArray, QVariant> &entry : data.properties) { if (entry.first == QByteArrayLiteral("data") || entry.first == QByteArrayLiteral("childNodes")) // We don't handle default Node properties |