diff options
author | Janne Kangas <janne.kangas@qt.io> | 2019-08-13 09:51:41 +0300 |
---|---|---|
committer | Janne Kangas <janne.kangas@qt.io> | 2019-08-14 12:51:20 +0300 |
commit | 74f6b1262445e56d2511fe24caa9704cf563512b (patch) | |
tree | edc602de17572aca85e37d84ac0d8ade33d8513a /src/api/studio3d | |
parent | 998c4352801134eff290dc2f4677eebe650233af (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.h | 1 | ||||
-rw-r--r-- | src/api/studio3d/q3dsdatainput_p.h | 1 | ||||
-rw-r--r-- | src/api/studio3d/q3dspresentation.cpp | 11 | ||||
-rw-r--r-- | src/api/studio3d/q3dspresentation_p.h | 1 |
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); |