mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	game_list: Add SD registration loading to game list
This commit is contained in:
		
							parent
							
								
									ab44192ab0
								
							
						
					
					
						commit
						60b7a3b904
					
				@ -426,13 +426,12 @@ static void GetMetadataFromControlNCA(const std::shared_ptr<FileSys::NCA>& nca,
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GameListWorker::AddInstalledTitlesToGameList() {
 | 
					void GameListWorker::AddInstalledTitlesToGameList(std::shared_ptr<FileSys::RegisteredCache> cache) {
 | 
				
			||||||
    const auto usernand = Service::FileSystem::GetUserNANDContents();
 | 
					    const auto installed_games = cache->ListEntriesFilter(FileSys::TitleType::Application,
 | 
				
			||||||
    const auto installed_games = usernand->ListEntriesFilter(FileSys::TitleType::Application,
 | 
					                                                          FileSys::ContentRecordType::Program);
 | 
				
			||||||
                                                             FileSys::ContentRecordType::Program);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (const auto& game : installed_games) {
 | 
					    for (const auto& game : installed_games) {
 | 
				
			||||||
        const auto& file = usernand->GetEntryRaw(game);
 | 
					        const auto& file = cache->GetEntryUnparsed(game);
 | 
				
			||||||
        std::unique_ptr<Loader::AppLoader> loader = Loader::GetLoader(file);
 | 
					        std::unique_ptr<Loader::AppLoader> loader = Loader::GetLoader(file);
 | 
				
			||||||
        if (!loader)
 | 
					        if (!loader)
 | 
				
			||||||
            continue;
 | 
					            continue;
 | 
				
			||||||
@ -442,8 +441,7 @@ void GameListWorker::AddInstalledTitlesToGameList() {
 | 
				
			|||||||
        u64 program_id = 0;
 | 
					        u64 program_id = 0;
 | 
				
			||||||
        loader->ReadProgramId(program_id);
 | 
					        loader->ReadProgramId(program_id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const auto& control =
 | 
					        const auto& control = cache->GetEntry(game.title_id, FileSys::ContentRecordType::Control);
 | 
				
			||||||
            usernand->GetEntry(game.title_id, FileSys::ContentRecordType::Control);
 | 
					 | 
				
			||||||
        if (control != nullptr)
 | 
					        if (control != nullptr)
 | 
				
			||||||
            GetMetadataFromControlNCA(control, icon, name);
 | 
					            GetMetadataFromControlNCA(control, icon, name);
 | 
				
			||||||
        emit EntryReady({
 | 
					        emit EntryReady({
 | 
				
			||||||
@ -457,11 +455,11 @@ void GameListWorker::AddInstalledTitlesToGameList() {
 | 
				
			|||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const auto control_data = usernand->ListEntriesFilter(FileSys::TitleType::Application,
 | 
					    const auto control_data = cache->ListEntriesFilter(FileSys::TitleType::Application,
 | 
				
			||||||
                                                          FileSys::ContentRecordType::Control);
 | 
					                                                       FileSys::ContentRecordType::Control);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (const auto& entry : control_data) {
 | 
					    for (const auto& entry : control_data) {
 | 
				
			||||||
        const auto nca = usernand->GetEntry(entry);
 | 
					        const auto nca = cache->GetEntry(entry);
 | 
				
			||||||
        if (nca != nullptr)
 | 
					        if (nca != nullptr)
 | 
				
			||||||
            nca_control_map.insert_or_assign(entry.title_id, nca);
 | 
					            nca_control_map.insert_or_assign(entry.title_id, nca);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -549,7 +547,9 @@ void GameListWorker::run() {
 | 
				
			|||||||
    stop_processing = false;
 | 
					    stop_processing = false;
 | 
				
			||||||
    watch_list.append(dir_path);
 | 
					    watch_list.append(dir_path);
 | 
				
			||||||
    FillControlMap(dir_path.toStdString());
 | 
					    FillControlMap(dir_path.toStdString());
 | 
				
			||||||
    AddInstalledTitlesToGameList();
 | 
					    AddInstalledTitlesToGameList(Service::FileSystem::GetUserNANDContents());
 | 
				
			||||||
 | 
					    AddInstalledTitlesToGameList(Service::FileSystem::GetSystemNANDContents());
 | 
				
			||||||
 | 
					    AddInstalledTitlesToGameList(Service::FileSystem::GetSDMCContents());
 | 
				
			||||||
    AddFstEntriesToGameList(dir_path.toStdString(), deep_scan ? 256 : 0);
 | 
					    AddFstEntriesToGameList(dir_path.toStdString(), deep_scan ? 256 : 0);
 | 
				
			||||||
    nca_control_map.clear();
 | 
					    nca_control_map.clear();
 | 
				
			||||||
    emit Finished(watch_list);
 | 
					    emit Finished(watch_list);
 | 
				
			||||||
 | 
				
			|||||||
@ -172,7 +172,7 @@ private:
 | 
				
			|||||||
    bool deep_scan;
 | 
					    bool deep_scan;
 | 
				
			||||||
    std::atomic_bool stop_processing;
 | 
					    std::atomic_bool stop_processing;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void AddInstalledTitlesToGameList();
 | 
					    void AddInstalledTitlesToGameList(std::shared_ptr<FileSys::RegisteredCache> cache);
 | 
				
			||||||
    void FillControlMap(const std::string& dir_path);
 | 
					    void FillControlMap(const std::string& dir_path);
 | 
				
			||||||
    void AddFstEntriesToGameList(const std::string& dir_path, unsigned int recursion = 0);
 | 
					    void AddFstEntriesToGameList(const std::string& dir_path, unsigned int recursion = 0);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user