forked from qt-creator/qt-creator
QmlProfiler: Use data replay feature for saving traces
This removes the last access to the master event list, which allows us to also remove the accessor function. Change-Id: I0e70c2eb23d2b11aa8b131c03eb3adfad1a9b9e7 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
@@ -126,12 +126,6 @@ QmlProfilerDataModel::~QmlProfilerDataModel()
|
||||
delete d;
|
||||
}
|
||||
|
||||
const QVector<QmlEvent> &QmlProfilerDataModel::events() const
|
||||
{
|
||||
Q_D(const QmlProfilerDataModel);
|
||||
return d->eventList;
|
||||
}
|
||||
|
||||
const QVector<QmlEventType> &QmlProfilerDataModel::eventTypes() const
|
||||
{
|
||||
Q_D(const QmlProfilerDataModel);
|
||||
|
@@ -45,7 +45,6 @@ public:
|
||||
QmlProfilerModelManager *parent);
|
||||
~QmlProfilerDataModel();
|
||||
|
||||
const QVector<QmlEvent> &events() const;
|
||||
const QVector<QmlEventType> &eventTypes() const;
|
||||
void setData(qint64 traceStart, qint64 traceEnd, const QVector<QmlEventType> &types,
|
||||
const QVector<QmlEvent> &events);
|
||||
|
@@ -302,7 +302,7 @@ void QmlProfilerModelManager::save(const QString &filename)
|
||||
QmlProfilerFileWriter *writer = new QmlProfilerFileWriter(this);
|
||||
writer->setTraceTime(traceTime()->startTime(), traceTime()->endTime(),
|
||||
traceTime()->duration());
|
||||
writer->setData(d->model->eventTypes(), d->model->events());
|
||||
writer->setData(d->model);
|
||||
writer->setNotes(d->notesModel->notes());
|
||||
|
||||
connect(writer, &QObject::destroyed, this, &QmlProfilerModelManager::saveFinished,
|
||||
|
@@ -504,11 +504,9 @@ void QmlProfilerFileWriter::setTraceTime(qint64 startTime, qint64 endTime, qint6
|
||||
m_measuredTime = measuredTime;
|
||||
}
|
||||
|
||||
void QmlProfilerFileWriter::setData(const QVector<QmlEventType> &types,
|
||||
const QVector<QmlEvent> &events)
|
||||
void QmlProfilerFileWriter::setData(const QmlProfilerDataModel *model)
|
||||
{
|
||||
m_eventTypes = types;
|
||||
m_events = events;
|
||||
m_model = model;
|
||||
}
|
||||
|
||||
void QmlProfilerFileWriter::setNotes(const QVector<QmlNote> ¬es)
|
||||
@@ -524,8 +522,8 @@ void QmlProfilerFileWriter::setFuture(QFutureInterface<void> *future)
|
||||
void QmlProfilerFileWriter::save(QIODevice *device)
|
||||
{
|
||||
if (m_future) {
|
||||
m_future->setProgressRange(0,
|
||||
qMax(m_eventTypes.size() + m_events.size() + m_notes.size(), 1));
|
||||
m_future->setProgressRange(
|
||||
0, qMax(m_model->eventTypes().size() + m_model->count() + m_notes.size(), 1));
|
||||
m_future->setProgressValue(0);
|
||||
m_newProgressValue = 0;
|
||||
}
|
||||
@@ -544,11 +542,12 @@ void QmlProfilerFileWriter::save(QIODevice *device)
|
||||
stream.writeStartElement(_("eventData"));
|
||||
stream.writeAttribute(_("totalTime"), QString::number(m_measuredTime));
|
||||
|
||||
for (int typeIndex = 0; typeIndex < m_eventTypes.size(); ++typeIndex) {
|
||||
const QVector<QmlEventType> &eventTypes = m_model->eventTypes();
|
||||
for (int typeIndex = 0; typeIndex < eventTypes.size(); ++typeIndex) {
|
||||
if (isCanceled())
|
||||
return;
|
||||
|
||||
const QmlEventType &type = m_eventTypes[typeIndex];
|
||||
const QmlEventType &type = eventTypes[typeIndex];
|
||||
|
||||
stream.writeStartElement(_("event"));
|
||||
stream.writeAttribute(_("index"), QString::number(typeIndex));
|
||||
@@ -596,15 +595,14 @@ void QmlProfilerFileWriter::save(QIODevice *device)
|
||||
stream.writeStartElement(_("profilerDataModel"));
|
||||
|
||||
QStack<QmlEvent> stack;
|
||||
for (int rangeIndex = 0; rangeIndex < m_events.size(); ++rangeIndex) {
|
||||
m_model->replayEvents(-1, -1, [this, &stack, &stream](const QmlEvent &event,
|
||||
const QmlEventType &type) {
|
||||
if (isCanceled())
|
||||
return;
|
||||
|
||||
const QmlEvent &event = m_events[rangeIndex];
|
||||
const QmlEventType &type = m_eventTypes[event.typeIndex()];
|
||||
if (type.rangeType != MaximumRangeType && event.rangeStage() == RangeStart) {
|
||||
stack.push(event);
|
||||
continue;
|
||||
return;
|
||||
}
|
||||
|
||||
stream.writeStartElement(_("range"));
|
||||
@@ -666,7 +664,7 @@ void QmlProfilerFileWriter::save(QIODevice *device)
|
||||
|
||||
stream.writeEndElement();
|
||||
incrementProgress();
|
||||
}
|
||||
});
|
||||
stream.writeEndElement(); // profilerDataModel
|
||||
|
||||
stream.writeStartElement(_("noteData"));
|
||||
|
@@ -88,7 +88,7 @@ public:
|
||||
explicit QmlProfilerFileWriter(QObject *parent = 0);
|
||||
|
||||
void setTraceTime(qint64 startTime, qint64 endTime, qint64 measturedTime);
|
||||
void setData(const QVector<QmlEventType> &types, const QVector<QmlEvent> &events);
|
||||
void setData(const QmlProfilerDataModel *model);
|
||||
void setNotes(const QVector<QmlNote> ¬es);
|
||||
void setFuture(QFutureInterface<void> *future);
|
||||
|
||||
@@ -101,8 +101,7 @@ private:
|
||||
|
||||
qint64 m_startTime, m_endTime, m_measuredTime;
|
||||
QFutureInterface<void> *m_future;
|
||||
QVector<QmlEventType> m_eventTypes;
|
||||
QVector<QmlEvent> m_events;
|
||||
const QmlProfilerDataModel *m_model;
|
||||
QVector<QmlNote> m_notes;
|
||||
int m_newProgressValue;
|
||||
};
|
||||
|
Reference in New Issue
Block a user