summaryrefslogtreecommitdiff
path: root/src/modinfowithconflictinfo.cpp
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-05-24 13:27:40 +0200
committerMikaël Capelle <capelle.mikael@gmail.com>2020-05-24 13:27:40 +0200
commit9fb639a00e1a809a9ea9b5e68777ec46f534761c (patch)
tree9f72cebe6ba9825a0330fefe60a0b55de2392a2e /src/modinfowithconflictinfo.cpp
parent08ae9db2fd2a07acb2433275fc84c2ca47267a92 (diff)
Update ModInfo to use a single file tree for all content-related operations.
Diffstat (limited to 'src/modinfowithconflictinfo.cpp')
-rw-r--r--src/modinfowithconflictinfo.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/modinfowithconflictinfo.cpp b/src/modinfowithconflictinfo.cpp
index 0c67b4f7..45ecffb7 100644
--- a/src/modinfowithconflictinfo.cpp
+++ b/src/modinfowithconflictinfo.cpp
@@ -296,14 +296,30 @@ bool ModInfoWithConflictInfo::hasHiddenFiles() const
return m_HasHiddenFiles;
}
+void ModInfoWithConflictInfo::diskContentModified() {
+ std::unique_lock lock(m_Mutex);
+ m_FileTree = nullptr;
+}
+
+std::shared_ptr<const IFileTree> ModInfoWithConflictInfo::contentFileTree() const {
+ std::unique_lock lock(m_Mutex);
+ if (!m_FileTree) {
+ m_FileTree = QDirFileTree::makeTree(absolutePath());
+ }
+ return m_FileTree;
+}
bool ModInfoWithConflictInfo::doTestValid() const {
auto mdc = m_GamePlugin->feature<ModDataChecker>();
if (mdc) {
- auto qdirfiletree = QDirFileTree::makeTree(absolutePath());
+ auto qdirfiletree = contentFileTree();
return mdc->dataLooksValid(qdirfiletree);
}
return true;
}
+
+bool ModInfoWithConflictInfo::isValid() const {
+ return doTestValid();
+}