aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2014-07-03 11:55:03 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-07-03 18:07:43 +0200
commit7a96f30d0f84f46287c954ed10292a258ad13fbb (patch)
tree6731acbc462961020af5be5e68072096939b8192 /src/lib/corelib/language
parentb9e3b55ee846a3e39acd72c1e12aeb4126b99272 (diff)
Remember at what point in time a project was fully resolved.
And use that information for out-of-date checks instead of the build graph time stamp. The latter is updated after resolving or even building has finished, which means we miss all changes to project files that have happened in between. Change-Id: I4b2f9e962c26894ce167b36ae3e562e7905d2a3c Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r--src/lib/corelib/language/language.cpp4
-rw-r--r--src/lib/corelib/language/language.h1
-rw-r--r--src/lib/corelib/language/loader.cpp2
3 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp
index 300b41d2d..cc9d02180 100644
--- a/src/lib/corelib/language/language.cpp
+++ b/src/lib/corelib/language/language.cpp
@@ -937,7 +937,7 @@ void ResolvedProject::store(PersistentPool &pool) const
}
-TopLevelProject::TopLevelProject() : locked(false)
+TopLevelProject::TopLevelProject() : locked(false), lastResolveTime(FileTime::oldestTime())
{
}
@@ -1010,6 +1010,7 @@ void TopLevelProject::load(PersistentPool &pool)
for (QHash<QString, QString>::const_iterator i = envHash.begin(); i != envHash.end(); ++i)
environment.insert(i.key(), i.value());
pool.stream() >> buildSystemFiles;
+ pool.stream() >> lastResolveTime;
buildData.reset(pool.idLoad<ProjectBuildData>());
QBS_CHECK(buildData);
buildData->isDirty = false;
@@ -1026,6 +1027,7 @@ void TopLevelProject::store(PersistentPool &pool) const
envHash.insert(key, environment.value(key));
pool.stream() << envHash;
pool.stream() << buildSystemFiles;
+ pool.stream() << lastResolveTime;
pool.store(buildData.data());
}
diff --git a/src/lib/corelib/language/language.h b/src/lib/corelib/language/language.h
index c1605394a..ed1b37320 100644
--- a/src/lib/corelib/language/language.h
+++ b/src/lib/corelib/language/language.h
@@ -463,6 +463,7 @@ public:
bool locked;
QSet<QString> buildSystemFiles;
+ FileTime lastResolveTime;
void setBuildConfiguration(const QVariantMap &config);
const QVariantMap &buildConfiguration() const { return m_buildConfiguration; }
diff --git a/src/lib/corelib/language/loader.cpp b/src/lib/corelib/language/loader.cpp
index 921387121..a1e557bca 100644
--- a/src/lib/corelib/language/loader.cpp
+++ b/src/lib/corelib/language/loader.cpp
@@ -106,8 +106,10 @@ TopLevelProjectPtr Loader::loadProject(const SetupProjectParameters &parameters)
cancelationTimer.start(1000);
}
+ const FileTime resolveTime = FileTime::currentTime();
ModuleLoaderResult loadResult = m_moduleLoader->load(parameters);
const TopLevelProjectPtr project = m_projectResolver->resolve(loadResult, parameters);
+ project->lastResolveTime = resolveTime;
// E.g. if the top-level project is disabled.
if (m_progressObserver)