diff options
author | Alexander Tkachev | 2016-06-05 22:26:51 +0600 |
---|---|---|
committer | Alexander Tkachev | 2016-08-24 16:07:55 +0600 |
commit | 9eb4aad7fdea54fd99ad4a9aa4ab78bf64f81794 (patch) | |
tree | c023071ab99a5804b78121e9d7bbbcc16975c253 /backends/saves/default/default-saves.cpp | |
parent | 0ce7be17d3fec380f726c1ff16c559344b3e24c1 (diff) | |
download | scummvm-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.cpp | 20 |
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; } |