diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-03 11:55:03 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-03 18:07:43 +0200 |
commit | 7a96f30d0f84f46287c954ed10292a258ad13fbb (patch) | |
tree | 6731acbc462961020af5be5e68072096939b8192 /src/lib/corelib/language | |
parent | b9e3b55ee846a3e39acd72c1e12aeb4126b99272 (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.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/language/language.h | 1 | ||||
-rw-r--r-- | src/lib/corelib/language/loader.cpp | 2 |
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 ¶meters) 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) |