summaryrefslogtreecommitdiff
path: root/src/core/hle
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle')
-rw-r--r--src/core/hle/service/aoc/aoc_u.cpp4
-rw-r--r--src/core/hle/service/filesystem/filesystem.cpp18
-rw-r--r--src/core/hle/service/filesystem/filesystem.h3
3 files changed, 6 insertions, 19 deletions
diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp
index b276de332..0417fdb92 100644
--- a/src/core/hle/service/aoc/aoc_u.cpp
+++ b/src/core/hle/service/aoc/aoc_u.cpp
@@ -34,14 +34,14 @@ static std::vector<u64> AccumulateAOCTitleIDs() {
34 std::vector<u64> add_on_content; 34 std::vector<u64> add_on_content;
35 const auto rcu = FileSystem::GetUnionContents(); 35 const auto rcu = FileSystem::GetUnionContents();
36 const auto list = 36 const auto list =
37 rcu->ListEntriesFilter(FileSys::TitleType::AOC, FileSys::ContentRecordType::Data); 37 rcu.ListEntriesFilter(FileSys::TitleType::AOC, FileSys::ContentRecordType::Data);
38 std::transform(list.begin(), list.end(), std::back_inserter(add_on_content), 38 std::transform(list.begin(), list.end(), std::back_inserter(add_on_content),
39 [](const FileSys::RegisteredCacheEntry& rce) { return rce.title_id; }); 39 [](const FileSys::RegisteredCacheEntry& rce) { return rce.title_id; });
40 add_on_content.erase( 40 add_on_content.erase(
41 std::remove_if( 41 std::remove_if(
42 add_on_content.begin(), add_on_content.end(), 42 add_on_content.begin(), add_on_content.end(),
43 [&rcu](u64 tid) { 43 [&rcu](u64 tid) {
44 return rcu->GetEntry(tid, FileSys::ContentRecordType::Data)->GetStatus() != 44 return rcu.GetEntry(tid, FileSys::ContentRecordType::Data)->GetStatus() !=
45 Loader::ResultStatus::Success; 45 Loader::ResultStatus::Success;
46 }), 46 }),
47 add_on_content.end()); 47 add_on_content.end());
diff --git a/src/core/hle/service/filesystem/filesystem.cpp b/src/core/hle/service/filesystem/filesystem.cpp
index 3bdff4036..b1490e6fa 100644
--- a/src/core/hle/service/filesystem/filesystem.cpp
+++ b/src/core/hle/service/filesystem/filesystem.cpp
@@ -341,20 +341,9 @@ ResultVal<FileSys::VirtualDir> OpenSDMC() {
341 return sdmc_factory->Open(); 341 return sdmc_factory->Open();
342} 342}
343 343
344std::shared_ptr<FileSys::RegisteredCacheUnion> registered_cache_union; 344FileSys::RegisteredCacheUnion GetUnionContents() {
345 345 return FileSys::RegisteredCacheUnion{
346std::shared_ptr<FileSys::RegisteredCacheUnion> GetUnionContents() { 346 {GetSystemNANDContents(), GetUserNANDContents(), GetSDMCContents()}};
347 if (registered_cache_union == nullptr) {
348 registered_cache_union =
349 std::make_shared<FileSys::RegisteredCacheUnion>(std::vector<FileSys::RegisteredCache*>{
350 GetSystemNANDContents(), GetUserNANDContents(), GetSDMCContents()});
351 }
352
353 return registered_cache_union;
354}
355
356void ClearUnionContents() {
357 registered_cache_union = nullptr;
358} 347}
359 348
360FileSys::RegisteredCache* GetSystemNANDContents() { 349FileSys::RegisteredCache* GetSystemNANDContents() {
@@ -407,7 +396,6 @@ void CreateFactories(FileSys::VfsFilesystem& vfs, bool overwrite) {
407 bis_factory = nullptr; 396 bis_factory = nullptr;
408 save_data_factory = nullptr; 397 save_data_factory = nullptr;
409 sdmc_factory = nullptr; 398 sdmc_factory = nullptr;
410 ClearUnionContents();
411 } 399 }
412 400
413 auto nand_directory = vfs.OpenDirectory(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir), 401 auto nand_directory = vfs.OpenDirectory(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir),
diff --git a/src/core/hle/service/filesystem/filesystem.h b/src/core/hle/service/filesystem/filesystem.h
index 278cf90ab..965414be0 100644
--- a/src/core/hle/service/filesystem/filesystem.h
+++ b/src/core/hle/service/filesystem/filesystem.h
@@ -48,8 +48,7 @@ ResultVal<FileSys::VirtualDir> OpenSaveData(FileSys::SaveDataSpaceId space,
48ResultVal<FileSys::VirtualDir> OpenSaveDataSpace(FileSys::SaveDataSpaceId space); 48ResultVal<FileSys::VirtualDir> OpenSaveDataSpace(FileSys::SaveDataSpaceId space);
49ResultVal<FileSys::VirtualDir> OpenSDMC(); 49ResultVal<FileSys::VirtualDir> OpenSDMC();
50 50
51std::shared_ptr<FileSys::RegisteredCacheUnion> GetUnionContents(); 51FileSys::RegisteredCacheUnion GetUnionContents();
52void ClearUnionContents();
53 52
54FileSys::RegisteredCache* GetSystemNANDContents(); 53FileSys::RegisteredCache* GetSystemNANDContents();
55FileSys::RegisteredCache* GetUserNANDContents(); 54FileSys::RegisteredCache* GetUserNANDContents();