Reduce calls to SessionManager:startupProject()

Might fix race conditions.

Change-Id: I70f7f28c88afe328468332898919b69fc432098b
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
This commit is contained in:
Nikolai Kosjar
2015-04-16 12:29:24 +02:00
parent da33795496
commit fce0b85106
2 changed files with 11 additions and 7 deletions

View File

@@ -74,8 +74,12 @@ RunControl *ClangStaticAnalyzerRunControlFactory::create(RunConfiguration *runCo
const ProjectInfo projectInfoBeforeBuild = m_tool->projectInfoBeforeBuild(); const ProjectInfo projectInfoBeforeBuild = m_tool->projectInfoBeforeBuild();
QTC_ASSERT(projectInfoBeforeBuild.isValid(), return 0); QTC_ASSERT(projectInfoBeforeBuild.isValid(), return 0);
Project *project = SessionManager::startupProject(); QTC_ASSERT(runConfiguration, return 0);
Target * const target = runConfiguration->target();
QTC_ASSERT(target, return 0);
Project * const project = target->project();
QTC_ASSERT(project, return 0); QTC_ASSERT(project, return 0);
const ProjectInfo projectInfoAfterBuild = CppModelManager::instance()->projectInfo(project); const ProjectInfo projectInfoAfterBuild = CppModelManager::instance()->projectInfo(project);
if (projectInfoAfterBuild.configurationOrFilesChanged(projectInfoBeforeBuild)) { if (projectInfoAfterBuild.configurationOrFilesChanged(projectInfoBeforeBuild)) {

View File

@@ -166,7 +166,7 @@ AnalyzerRunControl *ClangStaticAnalyzerTool::createRunControl(
// Some projects provides CompilerCallData once a build is finished, // Some projects provides CompilerCallData once a build is finished,
// so pass on the updated Project Info unless no configuration change // so pass on the updated Project Info unless no configuration change
// (defines/includes/files) happened. // (defines/includes/files) happened.
Project *project = SessionManager::startupProject(); Project *project = runConfiguration->target()->project();
QTC_ASSERT(project, return 0); QTC_ASSERT(project, return 0);
const CppTools::ProjectInfo projectInfoAfterBuild const CppTools::ProjectInfo projectInfoAfterBuild
= CppTools::CppModelManager::instance()->projectInfo(project); = CppTools::CppModelManager::instance()->projectInfo(project);
@@ -185,9 +185,8 @@ AnalyzerRunControl *ClangStaticAnalyzerTool::createRunControl(
return engine; return engine;
} }
static bool dontStartAfterHintForDebugMode() static bool dontStartAfterHintForDebugMode(Project *project)
{ {
const Project *project = SessionManager::startupProject();
BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown; BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown;
if (project) { if (project) {
if (const Target *target = project->activeTarget()) { if (const Target *target = project->activeTarget()) {
@@ -222,13 +221,14 @@ void ClangStaticAnalyzerTool::startTool()
{ {
AnalyzerManager::showMode(); AnalyzerManager::showMode();
if (dontStartAfterHintForDebugMode()) Project *project = SessionManager::startupProject();
QTC_ASSERT(project, return);
if (dontStartAfterHintForDebugMode(project))
return; return;
m_diagnosticModel->clear(); m_diagnosticModel->clear();
setBusyCursor(true); setBusyCursor(true);
Project *project = SessionManager::startupProject();
QTC_ASSERT(project, return);
m_diagnosticFilterModel->setProject(project); m_diagnosticFilterModel->setProject(project);
m_projectInfoBeforeBuild = CppTools::CppModelManager::instance()->projectInfo(project); m_projectInfoBeforeBuild = CppTools::CppModelManager::instance()->projectInfo(project);
QTC_ASSERT(m_projectInfoBeforeBuild.isValid(), return); QTC_ASSERT(m_projectInfoBeforeBuild.isValid(), return);