Commit 5c7509dd authored by Ulf Hermann's avatar Ulf Hermann

QmlProfiler: Add another data state "ClearingData"

This allows us to steer the timeline models in a more fine grained
way and avoid duplicate processing of the same data. We don't need
to rebuild everything on stateChanged of the model manager then.

Task-number: QTCREATORBUG-10950
Change-Id: I2aa9a96a33c602f062fc3b644ac06280ba7cd45a
Reviewed-by: default avatarKai Koehne <kai.koehne@digia.com>
parent 210e780c
......@@ -41,7 +41,6 @@ void AbstractTimelineModel::setModelManager(QmlProfilerModelManager *modelManage
{
m_modelManager = modelManager;
connect(modelManager->simpleModel(),SIGNAL(changed()),this,SLOT(dataChanged()));
connect(modelManager,SIGNAL(stateChanged()),this,SLOT(dataChanged()));
m_modelId = modelManager->registerModelProxy();
}
......@@ -85,7 +84,7 @@ void AbstractTimelineModel::dataChanged()
case QmlProfilerDataState::ProcessingData:
loadData();
break;
case QmlProfilerDataState::Empty:
case QmlProfilerDataState::ClearingData:
clear();
break;
default:
......
......@@ -99,7 +99,7 @@ void QmlProfilerEventsModelProxy::dataChanged()
if (d->modelManager->state() == QmlProfilerDataState::ProcessingData)
loadData();
if (d->modelManager->state() == QmlProfilerDataState::Empty)
if (d->modelManager->state() == QmlProfilerDataState::ClearingData)
clear();
}
......
......@@ -57,6 +57,9 @@ void QmlProfilerDataState::setState(QmlProfilerDataState::State state)
return;
switch (state) {
case ClearingData:
QTC_ASSERT(m_state == Done || m_state == Empty, /**/);
break;
case Empty:
// if it's not empty, complain but go on
QTC_ASSERT(m_modelManager->isEmpty(), /**/);
......@@ -345,6 +348,7 @@ QmlProfilerDataState::State QmlProfilerModelManager::state() const
void QmlProfilerModelManager::clear()
{
setState(QmlProfilerDataState::ClearingData);
for (int i = 0; i < d->partialCounts.count(); i++)
d->partialCounts[i] = 0;
d->progress = 0;
......
......@@ -52,6 +52,7 @@ public:
Empty,
AcquiringData,
ProcessingData,
ClearingData,
Done
};
......
......@@ -522,6 +522,8 @@ void QmlProfilerTool::profilerDataModelStateChanged()
{
switch (d->m_profilerModelManager->state()) {
case QmlProfilerDataState::Empty :
break;
case QmlProfilerDataState::ClearingData :
clearDisplay();
break;
case QmlProfilerDataState::AcquiringData :
......
......@@ -474,7 +474,8 @@ void QmlProfilerTraceView::setAppKilled()
void QmlProfilerTraceView::profilerDataModelStateChanged()
{
switch (d->m_modelManager->state()) {
case QmlProfilerDataState::Empty:
case QmlProfilerDataState::Empty: break;
case QmlProfilerDataState::ClearingData:
emit enableToolbar(false);
break;
case QmlProfilerDataState::AcquiringData: break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment