QmlDesigner: Tracing shows the node model relationship

Task-number: QDS-11952
Change-Id: I02769f07f3eadbe7f3e4095203619924cd545579
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2024-02-15 08:22:26 +01:00
parent 1b64158c7a
commit e1a2454e83
3 changed files with 19 additions and 5 deletions

View File

@@ -51,15 +51,19 @@ public:
using Pointer = std::shared_ptr<InternalNode>;
using WeakPointer = std::weak_ptr<InternalNode>;
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(); }

View File

@@ -295,7 +295,11 @@ InternalNodePointer ModelPrivate::createNode(const TypeName &typeName,
if (!isRootNode)
internalId = m_internalIdCounter++;
auto newNode = std::make_shared<InternalNode>(typeName, majorVersion, minorVersion, internalId);
auto newNode = std::make_shared<InternalNode>(typeName,
majorVersion,
minorVersion,
internalId,
m_traceToken.tickWithFlow("create node"_t));
setTypeId(newNode.get(), typeName);

View File

@@ -5,6 +5,8 @@
#include "qmldesignercorelib_global.h"
#include <tracing/qmldesignertracing.h>
#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<NodeInstanceView> m_nodeInstanceView;
QPointer<Model> m_metaInfoProxyModel;
QHash<TypeName, std::shared_ptr<NodeMetaInfoPrivate>> m_nodeMetaInfoCache;
ModelTracing::AsynchronousToken m_traceToken = ModelTracing::category().beginAsynchronous(
"Model"_t);
bool m_writeLock = false;
qint32 m_internalIdCounter = 1;
};