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() {
 | 
			
		||||
    const auto usernand = Service::FileSystem::GetUserNANDContents();
 | 
			
		||||
    const auto installed_games = usernand->ListEntriesFilter(FileSys::TitleType::Application,
 | 
			
		||||
void GameListWorker::AddInstalledTitlesToGameList(std::shared_ptr<FileSys::RegisteredCache> cache) {
 | 
			
		||||
    const auto installed_games = cache->ListEntriesFilter(FileSys::TitleType::Application,
 | 
			
		||||
                                                          FileSys::ContentRecordType::Program);
 | 
			
		||||
 | 
			
		||||
    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);
 | 
			
		||||
        if (!loader)
 | 
			
		||||
            continue;
 | 
			
		||||
@ -442,8 +441,7 @@ void GameListWorker::AddInstalledTitlesToGameList() {
 | 
			
		||||
        u64 program_id = 0;
 | 
			
		||||
        loader->ReadProgramId(program_id);
 | 
			
		||||
 | 
			
		||||
        const auto& control =
 | 
			
		||||
            usernand->GetEntry(game.title_id, FileSys::ContentRecordType::Control);
 | 
			
		||||
        const auto& control = cache->GetEntry(game.title_id, FileSys::ContentRecordType::Control);
 | 
			
		||||
        if (control != nullptr)
 | 
			
		||||
            GetMetadataFromControlNCA(control, icon, name);
 | 
			
		||||
        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);
 | 
			
		||||
 | 
			
		||||
    for (const auto& entry : control_data) {
 | 
			
		||||
        const auto nca = usernand->GetEntry(entry);
 | 
			
		||||
        const auto nca = cache->GetEntry(entry);
 | 
			
		||||
        if (nca != nullptr)
 | 
			
		||||
            nca_control_map.insert_or_assign(entry.title_id, nca);
 | 
			
		||||
    }
 | 
			
		||||
@ -549,7 +547,9 @@ void GameListWorker::run() {
 | 
			
		||||
    stop_processing = false;
 | 
			
		||||
    watch_list.append(dir_path);
 | 
			
		||||
    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);
 | 
			
		||||
    nca_control_map.clear();
 | 
			
		||||
    emit Finished(watch_list);
 | 
			
		||||
 | 
			
		||||
@ -172,7 +172,7 @@ private:
 | 
			
		||||
    bool deep_scan;
 | 
			
		||||
    std::atomic_bool stop_processing;
 | 
			
		||||
 | 
			
		||||
    void AddInstalledTitlesToGameList();
 | 
			
		||||
    void AddInstalledTitlesToGameList(std::shared_ptr<FileSys::RegisteredCache> cache);
 | 
			
		||||
    void FillControlMap(const std::string& dir_path);
 | 
			
		||||
    void AddFstEntriesToGameList(const std::string& dir_path, unsigned int recursion = 0);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user