summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2015-04-16 12:29:24 +0200
committerNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2015-04-27 15:31:27 +0300
commitfce0b8510615e599e8c2a24ec26206c2044049e8 (patch)
tree08be18bb5707880759ca4ed26e9f888998a43011
parentda3379549623e5ca7ce67724c661c9166fbcf445 (diff)
downloadqt-creator-fce0b8510615e599e8c2a24ec26206c2044049e8.tar.gz
Reduce calls to SessionManager:startupProject()
Might fix race conditions. Change-Id: I70f7f28c88afe328468332898919b69fc432098b Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
-rw-r--r--plugins/clangstaticanalyzer/clangstaticanalyzerruncontrolfactory.cpp6
-rw-r--r--plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp12
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);