aboutsummaryrefslogtreecommitdiff
path: root/backends/saves/default/default-saves.h
diff options
context:
space:
mode:
authorJohannes Schickel2016-02-25 18:33:33 +0100
committerJohannes Schickel2016-02-25 22:15:45 +0100
commitd6d63a16e2c34d3697a26aff97aadf76f1ab4c68 (patch)
tree00067c1f23bc6448722677ca95584f5e052321a6 /backends/saves/default/default-saves.h
parent8c5931bca4b85c8779bf69aeb04bad5ed4191b79 (diff)
downloadscummvm-rg350-d6d63a16e2c34d3697a26aff97aadf76f1ab4c68.tar.gz
scummvm-rg350-d6d63a16e2c34d3697a26aff97aadf76f1ab4c68.tar.bz2
scummvm-rg350-d6d63a16e2c34d3697a26aff97aadf76f1ab4c68.zip
BACKENDS: Make DefaultSaveFileManager case insensitive.
For this we introduce a file cache inside DefaultSaveFileManager similar to what we use inside FSDirectory. However, we only do small updates for newly created saves (via openForSaving) or for removed saves (via removeSavefile). Re-caching is done whenever the savepath changes. Tizen changes have not been tested.
Diffstat (limited to 'backends/saves/default/default-saves.h')
-rw-r--r--backends/saves/default/default-saves.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/backends/saves/default/default-saves.h b/backends/saves/default/default-saves.h
index 81f45f96b8..bf4ca0229d 100644
--- a/backends/saves/default/default-saves.h
+++ b/backends/saves/default/default-saves.h
@@ -27,6 +27,7 @@
#include "common/savefile.h"
#include "common/str.h"
#include "common/fs.h"
+#include "common/hashmap.h"
/**
* Provides a default savefile manager implementation for common platforms.
@@ -54,6 +55,30 @@ protected:
* Sets the internal error and error message accordingly.
*/
virtual void checkPath(const Common::FSNode &dir);
+
+ /**
+ * Assure that the given save path is cached.
+ *
+ * @param savePathName String representation of save path to cache.
+ */
+ void assureCached(const Common::String &savePathName);
+
+ typedef Common::HashMap<Common::String, Common::FSNode, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> SaveFileCache;
+
+ /**
+ * Cache of all the save files in the currently cached directory.
+ *
+ * Modify with caution because we only re-cache when the save path changed!
+ * This needs to be updated inside at least openForSaving and
+ * removeSavefile.
+ */
+ SaveFileCache _saveFileCache;
+
+private:
+ /**
+ * The currently cached directory.
+ */
+ Common::String _cachedDirectory;
};
#endif