diff options
| author | JosJuice <josjuice@gmail.com> | 2018-06-01 09:36:29 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2018-06-06 17:34:07 +0200 |
| commit | 1c027bc148574cf0b05cd04f8ce15132e8115170 (patch) | |
| tree | cf7d352f8cc68bc26b37168f86c8314d448903a7 /Source/Core/UICommon/GameFileCache.cpp | |
| parent | daee5a4b43e95f50a1b024348a19d7f2bb48bdbc (diff) | |
Use UICommon's game list code on Android
Deduplicates code, and gets rid of some problems the old code had
(such as: bad performance when calling native functions, only one
disc showing up for multi-disc games, Wii banners being low-res,
unnecessarily much effort being needed for adding more metadata).
Diffstat (limited to 'Source/Core/UICommon/GameFileCache.cpp')
| -rw-r--r-- | Source/Core/UICommon/GameFileCache.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/Source/Core/UICommon/GameFileCache.cpp b/Source/Core/UICommon/GameFileCache.cpp index 7a71ca75f1..074dc7fe62 100644 --- a/Source/Core/UICommon/GameFileCache.cpp +++ b/Source/Core/UICommon/GameFileCache.cpp @@ -12,6 +12,7 @@ #include <mutex> #include <string> #include <unordered_set> +#include <utility> #include <vector> #include "Common/ChunkFile.h" @@ -38,12 +39,25 @@ std::vector<std::string> FindAllGamePaths(const std::vector<std::string>& direct return Common::DoFileSearch(directories_to_scan, search_extensions, recursive_scan); } +GameFileCache::GameFileCache() : m_path(File::GetUserPath(D_CACHE_IDX) + "gamelist.cache") +{ +} + +GameFileCache::GameFileCache(std::string path) : m_path(std::move(path)) +{ +} + void GameFileCache::ForEach(std::function<void(const std::shared_ptr<const GameFile>&)> f) const { for (const std::shared_ptr<const GameFile>& item : m_cached_files) f(item); } +size_t GameFileCache::GetSize() const +{ + return m_cached_files.size(); +} + void GameFileCache::Clear() { m_cached_files.clear(); @@ -179,9 +193,8 @@ bool GameFileCache::Save() bool GameFileCache::SyncCacheFile(bool save) { - std::string filename(File::GetUserPath(D_CACHE_IDX) + "gamelist.cache"); const char* open_mode = save ? "wb" : "rb"; - File::IOFile f(filename, open_mode); + File::IOFile f(m_path, open_mode); if (!f) return false; bool success = false; @@ -217,7 +230,7 @@ bool GameFileCache::SyncCacheFile(bool save) { // If some file operation failed, try to delete the probably-corrupted cache f.Close(); - File::Delete(filename); + File::Delete(m_path); } return success; } |
