ProjectExplorer: Use RAII pattern for parsing start/stop signalling

Change-Id: I13de537140f265db3e3d0ab1cd924d6897cd90c8
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Tobias Hunger
2019-08-06 14:46:37 +02:00
parent 8868989d5c
commit 09530d6dcc
18 changed files with 143 additions and 69 deletions

View File

@@ -463,7 +463,7 @@ bool QbsProject::checkCancelStatus()
qCDebug(qbsPmLog) << "Cancel request while parsing, starting re-parse";
m_qbsProjectParser->deleteLater();
m_qbsProjectParser = nullptr;
emitParsingFinished(false);
m_guard = {};
parseCurrentBuildConfiguration();
return true;
}
@@ -551,7 +551,8 @@ void QbsProject::handleQbsParsingDone(bool success)
updateAfterParse();
else if (envChanged)
updateCppCodeModel();
emitParsingFinished(success);
m_guard.markAsSuccess();
m_guard = {};
}
void QbsProject::rebuildProjectTree()
@@ -729,6 +730,8 @@ void QbsProject::configureAsExampleProject()
void QbsProject::parse(const QVariantMap &config, const Environment &env, const QString &dir,
const QString &configName)
{
m_guard = guardParsingRun();
prepareForParsing();
QTC_ASSERT(!m_qbsProjectParser, return);
@@ -736,7 +739,6 @@ void QbsProject::parse(const QVariantMap &config, const Environment &env, const
QbsManager::updateProfileIfNecessary(activeTarget()->kit());
m_qbsProjectParser->parse(config, env, dir, configName);
emitParsingStarted();
}
void QbsProject::prepareForParsing()