summaryrefslogtreecommitdiffstats
path: root/src/api/studio3d
diff options
context:
space:
mode:
authorJanne Kangas <janne.kangas@qt.io>2019-08-13 09:51:41 +0300
committerJanne Kangas <janne.kangas@qt.io>2019-08-14 12:51:20 +0300
commit74f6b1262445e56d2511fe24caa9704cf563512b (patch)
treeedc602de17572aca85e37d84ac0d8ade33d8513a /src/api/studio3d
parent998c4352801134eff290dc2f4677eebe650233af (diff)
Fix datainput value setter for Q3DSPresentation
Also set datainput value and dirty flag in Q3DSPresentation so that both are properly set for value changes from Q3DSDataInput and Q3DSPresentation APIs both. Change-Id: Ic7b2aa56a68bbe253de806051a5ab1201d5bec72 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/api/studio3d')
-rw-r--r--src/api/studio3d/q3dsdatainput.h1
-rw-r--r--src/api/studio3d/q3dsdatainput_p.h1
-rw-r--r--src/api/studio3d/q3dspresentation.cpp11
-rw-r--r--src/api/studio3d/q3dspresentation_p.h1
4 files changed, 12 insertions, 2 deletions
diff --git a/src/api/studio3d/q3dsdatainput.h b/src/api/studio3d/q3dsdatainput.h
index e358e77..8ca46b7 100644
--- a/src/api/studio3d/q3dsdatainput.h
+++ b/src/api/studio3d/q3dsdatainput.h
@@ -82,6 +82,7 @@ protected:
private:
Q_DISABLE_COPY(Q3DSDataInput)
friend class Q3DSPresentationPrivate;
+ friend class Q3DSPresentation;
friend class Q3DSRenderer;
};
diff --git a/src/api/studio3d/q3dsdatainput_p.h b/src/api/studio3d/q3dsdatainput_p.h
index 94384a5..022c815 100644
--- a/src/api/studio3d/q3dsdatainput_p.h
+++ b/src/api/studio3d/q3dsdatainput_p.h
@@ -83,6 +83,7 @@ protected:
QHash<QString, QString> m_metadata;
friend class Q3DSPresentationPrivate;
+ friend class Q3DSPresentation;
friend class Q3DSRenderer;
};
diff --git a/src/api/studio3d/q3dspresentation.cpp b/src/api/studio3d/q3dspresentation.cpp
index 2e1aeab..4a8c402 100644
--- a/src/api/studio3d/q3dspresentation.cpp
+++ b/src/api/studio3d/q3dspresentation.cpp
@@ -847,8 +847,9 @@ void Q3DSPresentation::setGlobalAnimationTime(qint64 milliseconds)
*/
void Q3DSPresentation::setDataInputValue(const QString &name, const QVariant &value)
{
- Q_UNUSED(name) // TODO: need these again when adding "force set" flag to this API
- Q_UNUSED(value)
+ // Set directly to avoid loop between Q3DSDataInput and Q3DSPresentation value setters
+ d_ptr->m_dataInputs[name]->d_ptr->m_value = value;
+ d_ptr->setDataInputDirty(name, true);
// We batch datainput changes within a frame, so just tell the presentation that one
// or more datainputs have changed value.
d_ptr->m_dataInputsChanged = true;
@@ -1634,6 +1635,12 @@ void Q3DSPresentationPrivate::setDataInputsChanged(bool changed)
m_dataInputsChanged = changed;
}
+void Q3DSPresentationPrivate::setDataInputDirty(const QString &name, bool dirty)
+{
+ if (m_dataInputs.contains(name))
+ m_dataInputs[name]->d_ptr->setDirty(dirty);
+}
+
void Q3DSPresentationPrivate::requestResponseHandler(CommandType commandType, void *requestData)
{
switch (commandType) {
diff --git a/src/api/studio3d/q3dspresentation_p.h b/src/api/studio3d/q3dspresentation_p.h
index 51317bd..5ade08e 100644
--- a/src/api/studio3d/q3dspresentation_p.h
+++ b/src/api/studio3d/q3dspresentation_p.h
@@ -72,6 +72,7 @@ public:
void setCommandQueue(CommandQueue *queue);
void setDelayedLoading(bool enable);
void setDataInputsChanged(bool changed);
+ void setDataInputDirty(const QString &name, bool dirty);
void registerElement(Q3DSElement *element);
void unregisterElement(Q3DSElement *element);