aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2016-05-10 13:27:48 +0200
committerUlf Hermann <ulf.hermann@qt.io>2016-05-23 12:32:10 +0000
commitecd8e764dd4b5106e76d20853d336943dc7d750c (patch)
tree33b54a16212cb0101fcb172bde87abe3a157ccfd /src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp
parentd6d69b811a1a09eb54b836c8c709ea97ee61ec58 (diff)
QmlProfiler: Add a binary trace format
Storing traces in binary form is preferable as loading and saving is faster and the trace files are smaller. Change-Id: Ia7340ac526d5ce9391b1e32fc48fc1fab3ffa13d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp')
-rw-r--r--src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp b/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp
index 6277ea81d4b..0ecd488dc3a 100644
--- a/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp
@@ -310,7 +310,10 @@ void QmlProfilerModelManager::save(const QString &filename)
QFuture<void> result = Utils::runAsync([file, writer] (QFutureInterface<void> &future) {
writer->setFuture(&future);
- writer->save(file);
+ if (file->fileName().endsWith(QLatin1String(Constants::QtdFileExtension)))
+ writer->saveQtd(file);
+ else
+ writer->saveQzt(file);
delete writer;
file->deleteLater();
});
@@ -321,8 +324,9 @@ void QmlProfilerModelManager::save(const QString &filename)
void QmlProfilerModelManager::load(const QString &filename)
{
+ bool isQtd = filename.endsWith(QLatin1String(Constants::QtdFileExtension));
QFile *file = new QFile(filename, this);
- if (!file->open(QIODevice::ReadOnly | QIODevice::Text)) {
+ if (!file->open(isQtd ? (QIODevice::ReadOnly | QIODevice::Text) : QIODevice::ReadOnly)) {
emit error(tr("Could not open %1 for reading.").arg(filename));
delete file;
emit loadFinished();
@@ -338,19 +342,28 @@ void QmlProfilerModelManager::load(const QString &filename)
emit error(message);
}, Qt::QueuedConnection);
+ connect(reader, &QmlProfilerFileReader::typesLoaded,
+ d->model, &QmlProfilerDataModel::setEventTypes);
+
+ connect(reader, &QmlProfilerFileReader::notesLoaded,
+ d->notesModel, &QmlProfilerNotesModel::setNotes);
+
+ connect(reader, &QmlProfilerFileReader::qmlEventLoaded,
+ d->model, &QmlProfilerDataModel::addEvent);
+
connect(reader, &QmlProfilerFileReader::success, this, [this, reader]() {
- d->model->setData(reader->traceStart(), qMax(reader->traceStart(), reader->traceEnd()),
- reader->eventTypes(), reader->events());
- d->notesModel->setNotes(reader->notes());
+ d->traceTime->setTime(reader->traceStart(), reader->traceEnd());
setRecordedFeatures(reader->loadedFeatures());
- d->traceTime->increaseEndTime(reader->events().last().timestamp());
delete reader;
acquiringDone();
}, Qt::QueuedConnection);
- QFuture<void> result = Utils::runAsync([file, reader] (QFutureInterface<void> &future) {
+ QFuture<void> result = Utils::runAsync([isQtd, file, reader] (QFutureInterface<void> &future) {
reader->setFuture(&future);
- reader->load(file);
+ if (isQtd)
+ reader->loadQtd(file);
+ else
+ reader->loadQzt(file);
file->close();
file->deleteLater();
});