filesystem: Cache RegisteredCacheUnion instead of constructing on demand
Prevents unnecessary re-reads of the metadata and unnecessary temporary objects.
This commit is contained in:
		| @@ -319,11 +319,18 @@ ResultVal<FileSys::VirtualDir> OpenSDMC() { | |||||||
|     return sdmc_factory->Open(); |     return sdmc_factory->Open(); | ||||||
| } | } | ||||||
|  |  | ||||||
| std::unique_ptr<FileSys::RegisteredCacheUnion> GetUnionContents() { | std::shared_ptr<FileSys::RegisteredCacheUnion> registered_cache_union; | ||||||
|     return std::make_unique<FileSys::RegisteredCacheUnion>(std::vector<FileSys::RegisteredCache*>{ |  | ||||||
|  | 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()}); |                 GetSystemNANDContents(), GetUserNANDContents(), GetSDMCContents()}); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     return registered_cache_union; | ||||||
|  | } | ||||||
|  |  | ||||||
| FileSys::RegisteredCache* GetSystemNANDContents() { | FileSys::RegisteredCache* GetSystemNANDContents() { | ||||||
|     LOG_TRACE(Service_FS, "Opening System NAND Contents"); |     LOG_TRACE(Service_FS, "Opening System NAND Contents"); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -47,7 +47,7 @@ ResultVal<FileSys::VirtualDir> OpenSaveData(FileSys::SaveDataSpaceId space, | |||||||
|                                             FileSys::SaveDataDescriptor save_struct); |                                             FileSys::SaveDataDescriptor save_struct); | ||||||
| ResultVal<FileSys::VirtualDir> OpenSDMC(); | ResultVal<FileSys::VirtualDir> OpenSDMC(); | ||||||
|  |  | ||||||
| std::unique_ptr<FileSys::RegisteredCacheUnion> GetUnionContents(); | std::shared_ptr<FileSys::RegisteredCacheUnion> GetUnionContents(); | ||||||
|  |  | ||||||
| FileSys::RegisteredCache* GetSystemNANDContents(); | FileSys::RegisteredCache* GetSystemNANDContents(); | ||||||
| FileSys::RegisteredCache* GetUserNANDContents(); | FileSys::RegisteredCache* GetUserNANDContents(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Zach Hilman
					Zach Hilman