summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2016-05-04 15:37:49 +0200
committerSean Harmer <sean.harmer@kdab.com>2016-05-04 20:13:03 +0000
commit4cf737a0f1cc05ff9baa4df329761d65f69e340c (patch)
tree26e7b413f561dfa154761789ab1a02a90bfe604e
parent2a8920969ae00a8feb7117f77abb8e15d480d6fa (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.cpp4
-rw-r--r--src/render/materialsystem/qshaderdata_p.h1
-rw-r--r--src/render/materialsystem/shaderdata.cpp2
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