diff options
author | Ac_K <Acoustik666@gmail.com> | 2023-03-31 21:16:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-31 21:16:46 +0200 |
commit | 4c2d9ff3ff9d7afb1fd0bd764bee5931fa5f053c (patch) | |
tree | 1245f5ec356551bd20a9594d114d06a53c41d036 /Ryujinx.Headless.SDL2/Program.cs | |
parent | 8198b99935f562ffb2fb9a75175a8df24d235152 (diff) |
HLE: Refactoring of ApplicationLoader (#4480)1.1.689
* HLE: Refactoring of ApplicationLoader
* Fix SDL2 Headless
* Addresses gdkchan feedback
* Fixes LoadUnpackedNca RomFS loading
* remove useless casting
* Cleanup and fixe empty application name
* Remove ProcessInfo
* Fixes typo
* ActiveProcess to ActiveApplication
* Update check
* Clean using.
* Use the correct filepath when loading Homebrew.npdm
* Fix NRE in ProcessResult if MetaLoader is null
* Add more checks for valid processId & return success
* Add missing logging statement for npdm error
* Return result for LoadKip()
* Move error logging out of PFS load extension method
This avoids logging "Could not find Main NCA"
followed by "Loading main..." when trying to start hbl.
* Fix GUIs not checking load results
* Fix style and formatting issues
* Fix formatting and wording
* gtk: Refactor LoadApplication()
---------
Co-authored-by: TSR Berry <20988865+TSRBerry@users.noreply.github.com>
Diffstat (limited to 'Ryujinx.Headless.SDL2/Program.cs')
-rw-r--r-- | Ryujinx.Headless.SDL2/Program.cs | 57 |
1 files changed, 47 insertions, 10 deletions
diff --git a/Ryujinx.Headless.SDL2/Program.cs b/Ryujinx.Headless.SDL2/Program.cs index f618e38d..54ab18cd 100644 --- a/Ryujinx.Headless.SDL2/Program.cs +++ b/Ryujinx.Headless.SDL2/Program.cs @@ -447,10 +447,10 @@ namespace Ryujinx.Headless.SDL2 private static void SetupProgressHandler() { - if (_emulationContext.Application.DiskCacheLoadState != null) + if (_emulationContext.Processes.ActiveApplication.DiskCacheLoadState != null) { - _emulationContext.Application.DiskCacheLoadState.StateChanged -= ProgressHandler; - _emulationContext.Application.DiskCacheLoadState.StateChanged += ProgressHandler; + _emulationContext.Processes.ActiveApplication.DiskCacheLoadState.StateChanged -= ProgressHandler; + _emulationContext.Processes.ActiveApplication.DiskCacheLoadState.StateChanged += ProgressHandler; } _emulationContext.Gpu.ShaderCacheStateChanged -= ProgressHandler; @@ -608,12 +608,24 @@ namespace Ryujinx.Headless.SDL2 if (romFsFiles.Length > 0) { Logger.Info?.Print(LogClass.Application, "Loading as cart with RomFS."); - _emulationContext.LoadCart(path, romFsFiles[0]); + + if (!_emulationContext.LoadCart(path, romFsFiles[0])) + { + _emulationContext.Dispose(); + + return false; + } } else { Logger.Info?.Print(LogClass.Application, "Loading as cart WITHOUT RomFS."); - _emulationContext.LoadCart(path); + + if (!_emulationContext.LoadCart(path)) + { + _emulationContext.Dispose(); + + return false; + } } } else if (File.Exists(path)) @@ -622,27 +634,52 @@ namespace Ryujinx.Headless.SDL2 { case ".xci": Logger.Info?.Print(LogClass.Application, "Loading as XCI."); - _emulationContext.LoadXci(path); + + if (!_emulationContext.LoadXci(path)) + { + _emulationContext.Dispose(); + + return false; + } break; case ".nca": Logger.Info?.Print(LogClass.Application, "Loading as NCA."); - _emulationContext.LoadNca(path); + + if (!_emulationContext.LoadNca(path)) + { + _emulationContext.Dispose(); + + return false; + } break; case ".nsp": case ".pfs0": Logger.Info?.Print(LogClass.Application, "Loading as NSP."); - _emulationContext.LoadNsp(path); + + if (!_emulationContext.LoadNsp(path)) + { + _emulationContext.Dispose(); + + return false; + } break; default: Logger.Info?.Print(LogClass.Application, "Loading as Homebrew."); try { - _emulationContext.LoadProgram(path); + if (!_emulationContext.LoadProgram(path)) + { + _emulationContext.Dispose(); + + return false; + } } catch (ArgumentOutOfRangeException) { Logger.Error?.Print(LogClass.Application, "The specified file is not supported by Ryujinx."); + _emulationContext.Dispose(); + return false; } break; @@ -664,4 +701,4 @@ namespace Ryujinx.Headless.SDL2 return true; } } -}
\ No newline at end of file +} |