diff options
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2015-01-06 21:30:40 +0000 |
---|---|---|
committer | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> | 2015-01-15 21:21:26 +0000 |
commit | b5237e885df72f6c37532fc8af9573966e7b07e5 (patch) | |
tree | fdfd4da299cc2779f35fcc30e770b85b9e710166 /src/core/loader/3dsx.cpp | |
parent | 2d63df90a9d64d3961be07ef0a959bc48b42c73b (diff) |
Loader: Keep a reference to the file and pass it to the correct AppLoader, instead of loading it multiple times.
Diffstat (limited to 'src/core/loader/3dsx.cpp')
-rw-r--r-- | src/core/loader/3dsx.cpp | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/src/core/loader/3dsx.cpp b/src/core/loader/3dsx.cpp index 54ee992fc..873ee8b25 100644 --- a/src/core/loader/3dsx.cpp +++ b/src/core/loader/3dsx.cpp @@ -199,28 +199,15 @@ static THREEDSX_Error Load3DSXFile(FileUtil::IOFile& file, u32 base_addr) return ERROR_NONE; } -/// AppLoader_DSX constructor -AppLoader_THREEDSX::AppLoader_THREEDSX(const std::string& filename) : filename(filename) { -} - -/// AppLoader_DSX destructor -AppLoader_THREEDSX::~AppLoader_THREEDSX() { -} - ResultStatus AppLoader_THREEDSX::Load() { - LOG_INFO(Loader, "Loading 3DSX file %s...", filename.c_str()); - if (is_loaded) return ResultStatus::ErrorAlreadyLoaded; - FileUtil::IOFile file(filename, "rb"); - - if (file.IsOpen()) { - Load3DSXFile(file, 0x00100000); - Kernel::LoadExec(0x00100000); - } else { + if (!file->IsOpen()) return ResultStatus::Error; - } + + Load3DSXFile(*file, 0x00100000); + Kernel::LoadExec(0x00100000); is_loaded = true; return ResultStatus::Success; |