diff options
Diffstat (limited to 'src/core/loader/xci.cpp')
| -rw-r--r-- | src/core/loader/xci.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/core/loader/xci.cpp b/src/core/loader/xci.cpp index 25e83af0f..aaa250cea 100644 --- a/src/core/loader/xci.cpp +++ b/src/core/loader/xci.cpp | |||
| @@ -20,18 +20,25 @@ | |||
| 20 | 20 | ||
| 21 | namespace Loader { | 21 | namespace Loader { |
| 22 | 22 | ||
| 23 | AppLoader_XCI::AppLoader_XCI(FileSys::VirtualFile file) | 23 | AppLoader_XCI::AppLoader_XCI(FileSys::VirtualFile file, |
| 24 | : AppLoader(file), xci(std::make_unique<FileSys::XCI>(file)), | 24 | const Service::FileSystem::FileSystemController& fsc, |
| 25 | const FileSys::ContentProvider& content_provider, | ||
| 26 | std::size_t program_index) | ||
| 27 | : AppLoader(file), xci(std::make_unique<FileSys::XCI>(file, program_index)), | ||
| 25 | nca_loader(std::make_unique<AppLoader_NCA>(xci->GetProgramNCAFile())) { | 28 | nca_loader(std::make_unique<AppLoader_NCA>(xci->GetProgramNCAFile())) { |
| 26 | if (xci->GetStatus() != ResultStatus::Success) | 29 | if (xci->GetStatus() != ResultStatus::Success) { |
| 27 | return; | 30 | return; |
| 31 | } | ||
| 28 | 32 | ||
| 29 | const auto control_nca = xci->GetNCAByType(FileSys::NCAContentType::Control); | 33 | const auto control_nca = xci->GetNCAByType(FileSys::NCAContentType::Control); |
| 30 | if (control_nca == nullptr || control_nca->GetStatus() != ResultStatus::Success) | 34 | if (control_nca == nullptr || control_nca->GetStatus() != ResultStatus::Success) { |
| 31 | return; | 35 | return; |
| 36 | } | ||
| 32 | 37 | ||
| 33 | std::tie(nacp_file, icon_file) = | 38 | std::tie(nacp_file, icon_file) = [this, &content_provider, &control_nca, &fsc] { |
| 34 | FileSys::PatchManager(xci->GetProgramTitleID()).ParseControlNCA(*control_nca); | 39 | const FileSys::PatchManager pm{xci->GetProgramTitleID(), fsc, content_provider}; |
| 40 | return pm.ParseControlNCA(*control_nca); | ||
| 41 | }(); | ||
| 35 | } | 42 | } |
| 36 | 43 | ||
| 37 | AppLoader_XCI::~AppLoader_XCI() = default; | 44 | AppLoader_XCI::~AppLoader_XCI() = default; |