diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-05-24 13:27:40 +0200 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-05-24 13:27:40 +0200 |
| commit | 9fb639a00e1a809a9ea9b5e68777ec46f534761c (patch) | |
| tree | 9f72cebe6ba9825a0330fefe60a0b55de2392a2e /src/modinfowithconflictinfo.cpp | |
| parent | 08ae9db2fd2a07acb2433275fc84c2ca47267a92 (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.cpp | 18 |
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(); +} |
