From e1a2454e8314e5683de39a40cef64311f82ce7f6 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 15 Feb 2024 08:22:26 +0100 Subject: [PATCH] QmlDesigner: Tracing shows the node model relationship Task-number: QDS-11952 Change-Id: I02769f07f3eadbe7f3e4095203619924cd545579 Reviewed-by: Tim Jenssen --- .../qmldesigner/designercore/model/internalnode_p.h | 12 ++++++++---- src/plugins/qmldesigner/designercore/model/model.cpp | 6 +++++- src/plugins/qmldesigner/designercore/model/model_p.h | 6 ++++++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/internalnode_p.h b/src/plugins/qmldesigner/designercore/model/internalnode_p.h index 66dbf02a333..f3fe55f2315 100644 --- a/src/plugins/qmldesigner/designercore/model/internalnode_p.h +++ b/src/plugins/qmldesigner/designercore/model/internalnode_p.h @@ -51,15 +51,19 @@ public: using Pointer = std::shared_ptr; using WeakPointer = std::weak_ptr; - explicit InternalNode(TypeName typeName, int majorVersion, int minorVersion, qint32 internalId) + explicit InternalNode(TypeName typeName, + int majorVersion, + int minorVersion, + qint32 internalId, + ModelTracing::Category::FlowTokenType flowTraceToken) : typeName(std::move(typeName)) , majorVersion(majorVersion) , minorVersion(minorVersion) , isValid(true) , internalId(internalId) - , traceToken(ModelTracing::category().beginAsynchronous("InternalNode"_t, - keyValue("type", typeName), - keyValue("internal id", internalId))) + , traceToken(flowTraceToken.beginAsynchronous("InternalNode"_t, + keyValue("type", typeName), + keyValue("internal id", internalId))) {} InternalNodeAbstractProperty::Pointer parentProperty() const { return m_parentProperty.lock(); } diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index c9fca30b23f..611ea4253d0 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -295,7 +295,11 @@ InternalNodePointer ModelPrivate::createNode(const TypeName &typeName, if (!isRootNode) internalId = m_internalIdCounter++; - auto newNode = std::make_shared(typeName, majorVersion, minorVersion, internalId); + auto newNode = std::make_shared(typeName, + majorVersion, + minorVersion, + internalId, + m_traceToken.tickWithFlow("create node"_t)); setTypeId(newNode.get(), typeName); diff --git a/src/plugins/qmldesigner/designercore/model/model_p.h b/src/plugins/qmldesigner/designercore/model/model_p.h index 0af3cf3b7ca..07aff386bb6 100644 --- a/src/plugins/qmldesigner/designercore/model/model_p.h +++ b/src/plugins/qmldesigner/designercore/model/model_p.h @@ -5,6 +5,8 @@ #include "qmldesignercorelib_global.h" +#include + #include "abstractview.h" #ifndef QDS_USE_PROJECTSTORAGE # include "metainfo.h" @@ -37,6 +39,8 @@ class NodeMetaInfoPrivate; namespace Internal { +using namespace NanotraceHR::Literals; + class InternalNode; class InternalProperty; class InternalBindingProperty; @@ -353,6 +357,8 @@ private: QPointer m_nodeInstanceView; QPointer m_metaInfoProxyModel; QHash> m_nodeMetaInfoCache; + ModelTracing::AsynchronousToken m_traceToken = ModelTracing::category().beginAsynchronous( + "Model"_t); bool m_writeLock = false; qint32 m_internalIdCounter = 1; };