From fce0b8510615e599e8c2a24ec26206c2044049e8 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Thu, 16 Apr 2015 12:29:24 +0200 Subject: Reduce calls to SessionManager:startupProject() Might fix race conditions. Change-Id: I70f7f28c88afe328468332898919b69fc432098b Reviewed-by: Christian Kandeler --- .../clangstaticanalyzerruncontrolfactory.cpp | 6 +++++- plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp | 12 ++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.cpp b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.cpp index 9e8d69a4df..34fb3d4b5a 100644 --- a/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.cpp +++ b/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.cpp @@ -74,8 +74,12 @@ RunControl *ClangStaticAnalyzerRunControlFactory::create(RunConfiguration *runCo const ProjectInfo projectInfoBeforeBuild = m_tool->projectInfoBeforeBuild(); 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); + const ProjectInfo projectInfoAfterBuild = CppModelManager::instance()->projectInfo(project); if (projectInfoAfterBuild.configurationOrFilesChanged(projectInfoBeforeBuild)) { diff --git a/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp b/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp index 4e98a28ddd..c7a44e46de 100644 --- a/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp +++ b/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp @@ -166,7 +166,7 @@ AnalyzerRunControl *ClangStaticAnalyzerTool::createRunControl( // Some projects provides CompilerCallData once a build is finished, // so pass on the updated Project Info unless no configuration change // (defines/includes/files) happened. - Project *project = SessionManager::startupProject(); + Project *project = runConfiguration->target()->project(); QTC_ASSERT(project, return 0); const CppTools::ProjectInfo projectInfoAfterBuild = CppTools::CppModelManager::instance()->projectInfo(project); @@ -185,9 +185,8 @@ AnalyzerRunControl *ClangStaticAnalyzerTool::createRunControl( return engine; } -static bool dontStartAfterHintForDebugMode() +static bool dontStartAfterHintForDebugMode(Project *project) { - const Project *project = SessionManager::startupProject(); BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown; if (project) { if (const Target *target = project->activeTarget()) { @@ -222,13 +221,14 @@ void ClangStaticAnalyzerTool::startTool() { AnalyzerManager::showMode(); - if (dontStartAfterHintForDebugMode()) + Project *project = SessionManager::startupProject(); + QTC_ASSERT(project, return); + + if (dontStartAfterHintForDebugMode(project)) return; m_diagnosticModel->clear(); setBusyCursor(true); - Project *project = SessionManager::startupProject(); - QTC_ASSERT(project, return); m_diagnosticFilterModel->setProject(project); m_projectInfoBeforeBuild = CppTools::CppModelManager::instance()->projectInfo(project); QTC_ASSERT(m_projectInfoBeforeBuild.isValid(), return); -- cgit v1.2.3