aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/qmlprofiler/qmlprofilerstatewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/qmlprofiler/qmlprofilerstatewidget.cpp')
-rw-r--r--plugins/qmlprofiler/qmlprofilerstatewidget.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/plugins/qmlprofiler/qmlprofilerstatewidget.cpp b/plugins/qmlprofiler/qmlprofilerstatewidget.cpp
index 7887dec61e..193f4f7569 100644
--- a/plugins/qmlprofiler/qmlprofilerstatewidget.cpp
+++ b/plugins/qmlprofiler/qmlprofilerstatewidget.cpp
@@ -35,6 +35,7 @@
#include <QLabel>
#include <QProgressBar>
#include <QTime>
+#include <QDebug>
namespace QmlProfiler {
namespace Internal {
@@ -78,6 +79,7 @@ QmlProfilerStateWidget::QmlProfilerStateWidget(QmlProfilerStateManager *stateMan
d->progressBar = new QProgressBar(this);
layout->addWidget(d->progressBar);
+ d->progressBar->setMaximum(1000);
d->progressBar->setVisible(false);
setLayout(layout);
@@ -93,6 +95,8 @@ QmlProfilerStateWidget::QmlProfilerStateWidget(QmlProfilerStateManager *stateMan
d->m_modelManager = modelManager;
connect(d->m_modelManager,SIGNAL(stateChanged()), this, SLOT(dataStateChanged()));
connect(d->m_modelManager,SIGNAL(countChanged()), this, SLOT(dataStateChanged()));
+ connect(d->m_modelManager,SIGNAL(progressChanged()), this, SLOT(dataStateChanged()));
+ connect(this, SIGNAL(newTimeEstimation(qint64)), d->m_modelManager, SLOT(newTimeEstimation(qint64)));
d->m_profilerState = stateManager;
connect(d->m_profilerState,SIGNAL(stateChanged()), this, SLOT(profilerStateChanged()));
connect(d->m_profilerState, SIGNAL(serverRecordingChanged()),
@@ -194,9 +198,9 @@ void QmlProfilerStateWidget::updateDisplay()
if (d->isRecording) {
d->isRecording = false;
d->estimatedProfilingTime = d->profilingTimer.elapsed();
+ emit newTimeEstimation(d->estimatedProfilingTime);
}
- d->progressBar->setMaximum(d->estimatedProfilingTime);
- d->progressBar->setValue(d->m_modelManager->traceTime()->endTime() * 1e-6);
+ d->progressBar->setValue(d->m_modelManager->progress() * 1000);
d->progressBar->setVisible(true);
resize(300,70);
reposition();
@@ -230,9 +234,9 @@ void QmlProfilerStateWidget::updateDisplay()
if (d->isRecording) {
d->isRecording = false;
d->estimatedProfilingTime = d->profilingTimer.elapsed();
+ emit newTimeEstimation(d->estimatedProfilingTime);
}
- d->progressBar->setMaximum(d->estimatedProfilingTime);
- d->progressBar->setValue(d->m_modelManager->traceTime()->endTime() * 1e-6);
+ d->progressBar->setValue(d->m_modelManager->progress() * 1000);
d->progressBar->setVisible(true);
resize(300,70);
reposition();
@@ -250,15 +254,17 @@ void QmlProfilerStateWidget::updateDisplay()
// }
// There is a trace on view, hide this dialog
+ d->progressBar->setVisible(false);
setVisible(false);
}
void QmlProfilerStateWidget::dataStateChanged()
{
- d->loadingDone = d->m_modelManager->state() == QmlProfilerDataState::Done ||
+ // consider possible rounding errors
+ d->loadingDone = d->m_modelManager->progress() >= 0.99 ||
d->m_modelManager->state() == QmlProfilerDataState::Empty;
d->traceAvailable = d->m_modelManager->traceTime()->duration() > 0;
- d->emptyList = d->m_modelManager->isEmpty();
+ d->emptyList = d->m_modelManager->isEmpty() || d->m_modelManager->progress() == 0;
updateDisplay();
}
@@ -273,8 +279,11 @@ void QmlProfilerStateWidget::profilerStateChanged()
d->isRecording = d->m_profilerState->serverRecording();
if (d->isRecording)
d->profilingTimer.start();
- else
- d->estimatedProfilingTime = d->profilingTimer.elapsed();
+ else {
+ // estimated time in ns
+ d->estimatedProfilingTime = d->profilingTimer.elapsed() * 1e6;
+ emit newTimeEstimation(d->estimatedProfilingTime);
+ }
updateDisplay();
}