summaryrefslogtreecommitdiffstats
path: root/src/core/qpostman.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/qpostman.cpp')
-rw-r--r--src/core/qpostman.cpp33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/core/qpostman.cpp b/src/core/qpostman.cpp
index 2b8e6c3a8..9fd8f9104 100644
--- a/src/core/qpostman.cpp
+++ b/src/core/qpostman.cpp
@@ -39,12 +39,15 @@
#include "qpostman_p.h"
#include "qpostman_p_p.h"
+
+#include <Qt3DCore/qnode.h>
#include <Qt3DCore/qpropertyupdatedchange.h>
-#include <Qt3DCore/private/qscene_p.h>
+
#include <Qt3DCore/private/qlockableobserverinterface_p.h>
-#include <Qt3DCore/qnode.h>
#include <Qt3DCore/private/qnode_p.h>
#include <Qt3DCore/private/qpropertyupdatedchangebase_p.h>
+#include <Qt3DCore/private/qscene_p.h>
+#include <QtCore/private/qobject_p.h>
QT_BEGIN_NAMESPACE
@@ -116,17 +119,25 @@ bool QPostman::shouldNotifyFrontend(const QSceneChangePtr &e)
Q_D(QPostman);
const QPropertyUpdatedChangePtr propertyChange = qSharedPointerDynamicCast<QPropertyUpdatedChange>(e);
if (Q_LIKELY(d->m_scene != nullptr) && !propertyChange.isNull()) {
- const bool isFinal = QPropertyUpdatedChangeBasePrivate::get(propertyChange.data())->m_isFinal;
- if (isFinal)
- return true;
- const QScene::NodePropertyTrackData propertyTrackData = d->m_scene->lookupNodePropertyTrackData(e->subjectId());
- switch (propertyTrackData.updateMode) {
- case QNode::TrackAllPropertiesMode:
+ const QScene::NodePropertyTrackData propertyTrackData
+ = d->m_scene->lookupNodePropertyTrackData(e->subjectId());
+
+ const QNode::PropertyTrackingMode trackMode = propertyTrackData.trackedPropertiesOverrides.value(QLatin1String(propertyChange->propertyName()),
+ propertyTrackData.defaultTrackMode);
+
+ switch (trackMode) {
+ case QNode::TrackAllValues:
return true;
- case QNode::TrackNamedPropertiesMode:
- return propertyTrackData.namedProperties.contains(QLatin1String(propertyChange->propertyName()));
- case QNode::DefaultTrackMode:
+
+ case QNode::DontTrackValues:
return false;
+
+ case QNode::TrackFinalValues: {
+ const bool isIntermediate
+ = QPropertyUpdatedChangeBasePrivate::get(propertyChange.data())->m_isIntermediate;
+ return !isIntermediate;
+ }
+
default:
Q_UNREACHABLE();
return false;