mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-31 07:59:02 -05:00 
			
		
		
		
	filesystem: De-globalize registered_cache_union
We can just return a new instance of this when it's requested. This only ever holds pointers to the existing registed caches, so it's not a large object. Plus, this also gets rid of the need to keep around a separate member function just to properly clear out the union. Gets rid of one of five globals in the filesystem code.
This commit is contained in:
		| @@ -32,14 +32,14 @@ static std::vector<u64> AccumulateAOCTitleIDs() { | ||||
|     std::vector<u64> add_on_content; | ||||
|     const auto rcu = FileSystem::GetUnionContents(); | ||||
|     const auto list = | ||||
|         rcu->ListEntriesFilter(FileSys::TitleType::AOC, FileSys::ContentRecordType::Data); | ||||
|         rcu.ListEntriesFilter(FileSys::TitleType::AOC, FileSys::ContentRecordType::Data); | ||||
|     std::transform(list.begin(), list.end(), std::back_inserter(add_on_content), | ||||
|                    [](const FileSys::RegisteredCacheEntry& rce) { return rce.title_id; }); | ||||
|     add_on_content.erase( | ||||
|         std::remove_if( | ||||
|             add_on_content.begin(), add_on_content.end(), | ||||
|             [&rcu](u64 tid) { | ||||
|                 return rcu->GetEntry(tid, FileSys::ContentRecordType::Data)->GetStatus() != | ||||
|                 return rcu.GetEntry(tid, FileSys::ContentRecordType::Data)->GetStatus() != | ||||
|                        Loader::ResultStatus::Success; | ||||
|             }), | ||||
|         add_on_content.end()); | ||||
|   | ||||
| @@ -329,20 +329,9 @@ ResultVal<FileSys::VirtualDir> OpenSDMC() { | ||||
|     return sdmc_factory->Open(); | ||||
| } | ||||
|  | ||||
| std::shared_ptr<FileSys::RegisteredCacheUnion> registered_cache_union; | ||||
|  | ||||
| std::shared_ptr<FileSys::RegisteredCacheUnion> GetUnionContents() { | ||||
|     if (registered_cache_union == nullptr) { | ||||
|         registered_cache_union = | ||||
|             std::make_shared<FileSys::RegisteredCacheUnion>(std::vector<FileSys::RegisteredCache*>{ | ||||
|                 GetSystemNANDContents(), GetUserNANDContents(), GetSDMCContents()}); | ||||
|     } | ||||
|  | ||||
|     return registered_cache_union; | ||||
| } | ||||
|  | ||||
| void ClearUnionContents() { | ||||
|     registered_cache_union = nullptr; | ||||
| FileSys::RegisteredCacheUnion GetUnionContents() { | ||||
|     return FileSys::RegisteredCacheUnion{ | ||||
|         {GetSystemNANDContents(), GetUserNANDContents(), GetSDMCContents()}}; | ||||
| } | ||||
|  | ||||
| FileSys::RegisteredCache* GetSystemNANDContents() { | ||||
| @@ -395,7 +384,6 @@ void CreateFactories(FileSys::VfsFilesystem& vfs, bool overwrite) { | ||||
|         bis_factory = nullptr; | ||||
|         save_data_factory = nullptr; | ||||
|         sdmc_factory = nullptr; | ||||
|         ClearUnionContents(); | ||||
|     } | ||||
|  | ||||
|     auto nand_directory = vfs.OpenDirectory(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir), | ||||
|   | ||||
| @@ -48,8 +48,7 @@ ResultVal<FileSys::VirtualDir> OpenSaveData(FileSys::SaveDataSpaceId space, | ||||
| ResultVal<FileSys::VirtualDir> OpenSaveDataSpace(FileSys::SaveDataSpaceId space); | ||||
| ResultVal<FileSys::VirtualDir> OpenSDMC(); | ||||
|  | ||||
| std::shared_ptr<FileSys::RegisteredCacheUnion> GetUnionContents(); | ||||
| void ClearUnionContents(); | ||||
| FileSys::RegisteredCacheUnion GetUnionContents(); | ||||
|  | ||||
| FileSys::RegisteredCache* GetSystemNANDContents(); | ||||
| FileSys::RegisteredCache* GetUserNANDContents(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Lioncash
					Lioncash