aboutsummaryrefslogtreecommitdiff
path: root/backends/saves/default/default-saves.cpp
diff options
context:
space:
mode:
authorAlexander Tkachev2016-06-05 22:26:51 +0600
committerAlexander Tkachev2016-08-24 16:07:55 +0600
commit9eb4aad7fdea54fd99ad4a9aa4ab78bf64f81794 (patch)
treec023071ab99a5804b78121e9d7bbbcc16975c253 /backends/saves/default/default-saves.cpp
parent0ce7be17d3fec380f726c1ff16c559344b3e24c1 (diff)
downloadscummvm-rg350-9eb4aad7fdea54fd99ad4a9aa4ab78bf64f81794.tar.gz
scummvm-rg350-9eb4aad7fdea54fd99ad4a9aa4ab78bf64f81794.tar.bz2
scummvm-rg350-9eb4aad7fdea54fd99ad4a9aa4ab78bf64f81794.zip
CLOUD: Make DefaultSaveFileManager ignore syncing files
MetaEngines don't get "locked" files in the list, so won't try to open these. Save/Load dialog updates save list every time SavesSyncRequest tells it to.
Diffstat (limited to 'backends/saves/default/default-saves.cpp')
-rw-r--r--backends/saves/default/default-saves.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/backends/saves/default/default-saves.cpp b/backends/saves/default/default-saves.cpp
index 75ba50a081..a11d687c16 100644
--- a/backends/saves/default/default-saves.cpp
+++ b/backends/saves/default/default-saves.cpp
@@ -59,19 +59,33 @@ void DefaultSaveFileManager::checkPath(const Common::FSNode &dir) {
}
}
+void DefaultSaveFileManager::updateSavefilesList(Common::StringArray &lockedFiles) {
+ //make it refresh the cache next time it lists the saves
+ _cachedDirectory = "";
+
+ //remember the locked files list because some of these files don't exist yet
+ _lockedFiles = lockedFiles;
+}
+
Common::StringArray DefaultSaveFileManager::listSavefiles(const Common::String &pattern) {
// Assure the savefile name cache is up-to-date.
assureCached(getSavePath());
if (getError().getCode() != Common::kNoError)
return Common::StringArray();
+ Common::HashMap<Common::String, bool> locked;
+ for (Common::StringArray::const_iterator i = _lockedFiles.begin(), end = _lockedFiles.end(); i != end; ++i) {
+ if (i->matchString(pattern, true)) {
+ locked[*i] = true;
+ }
+ }
+
Common::StringArray results;
- for (SaveFileCache::const_iterator file = _saveFileCache.begin(), end = _saveFileCache.end(); file != end; ++file) {
- if (file->_key.matchString(pattern, true)) {
+ for (SaveFileCache::const_iterator file = _saveFileCache.begin(), end = _saveFileCache.end(); file != end; ++file) {
+ if (!locked.contains(file->_key) && file->_key.matchString(pattern, true)) {
results.push_back(file->_key);
}
}
-
return results;
}