diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2016-05-10 13:27:48 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2016-05-23 12:32:10 +0000 |
commit | ecd8e764dd4b5106e76d20853d336943dc7d750c (patch) | |
tree | 33b54a16212cb0101fcb172bde87abe3a157ccfd /src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp | |
parent | d6d69b811a1a09eb54b836c8c709ea97ee61ec58 (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.cpp | 29 |
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(); }); |