aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx/Ui/MainWindow.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx/Ui/MainWindow.cs')
-rw-r--r--Ryujinx/Ui/MainWindow.cs40
1 files changed, 28 insertions, 12 deletions
diff --git a/Ryujinx/Ui/MainWindow.cs b/Ryujinx/Ui/MainWindow.cs
index 4ac85745..c4c161c0 100644
--- a/Ryujinx/Ui/MainWindow.cs
+++ b/Ryujinx/Ui/MainWindow.cs
@@ -52,9 +52,10 @@ namespace Ryujinx.Ui
{
public class MainWindow : Window
{
- private readonly VirtualFileSystem _virtualFileSystem;
- private readonly ContentManager _contentManager;
- private readonly AccountManager _accountManager;
+ private readonly VirtualFileSystem _virtualFileSystem;
+ private readonly ContentManager _contentManager;
+ private readonly AccountManager _accountManager;
+ private readonly LibHacHorizonManager _libHacHorizonManager;
private UserChannelPersistence _userChannelPersistence;
@@ -157,13 +158,27 @@ namespace Ryujinx.Ui
// Hide emulation context status bar.
_statusBar.Hide();
- // Instanciate HLE objects.
- _virtualFileSystem = VirtualFileSystem.CreateInstance();
+ // Instantiate HLE objects.
+ _virtualFileSystem = VirtualFileSystem.CreateInstance();
+ _libHacHorizonManager = new LibHacHorizonManager();
+
+ _libHacHorizonManager.InitializeFsServer(_virtualFileSystem);
+ _libHacHorizonManager.InitializeArpServer();
+ _libHacHorizonManager.InitializeBcatServer();
+ _libHacHorizonManager.InitializeSystemClients();
+
+ // Save data created before we supported extra data in directory save data will not work properly if
+ // given empty extra data. Luckily some of that extra data can be created using the data from the
+ // save data indexer, which should be enough to check access permissions for user saves.
+ // Every single save data's extra data will be checked and fixed if needed each time the emulator is opened.
+ // Consider removing this at some point in the future when we don't need to worry about old saves.
+ VirtualFileSystem.FixExtraData(_libHacHorizonManager.RyujinxClient);
+
_contentManager = new ContentManager(_virtualFileSystem);
- _accountManager = new AccountManager(_virtualFileSystem);
+ _accountManager = new AccountManager(_libHacHorizonManager.RyujinxClient);
_userChannelPersistence = new UserChannelPersistence();
- // Instanciate GUI objects.
+ // Instantiate GUI objects.
_applicationLibrary = new ApplicationLibrary(_virtualFileSystem);
_uiHandler = new GtkHostUiHandler(this);
_deviceExitStatus = new AutoResetEvent(false);
@@ -373,7 +388,7 @@ namespace Ryujinx.Ui
private void InitializeSwitchInstance()
{
- _virtualFileSystem.Reload();
+ _virtualFileSystem.ReloadKeySet();
IRenderer renderer;
@@ -443,6 +458,7 @@ namespace Ryujinx.Ui
IntegrityCheckLevel fsIntegrityCheckLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None;
HLE.HLEConfiguration configuration = new HLE.HLEConfiguration(_virtualFileSystem,
+ _libHacHorizonManager,
_contentManager,
_accountManager,
_userChannelPersistence,
@@ -1095,7 +1111,7 @@ namespace Ryujinx.Ui
BlitStruct<ApplicationControlProperty> controlData = (BlitStruct<ApplicationControlProperty>)_tableStore.GetValue(treeIter, 10);
- _ = new GameTableContextMenu(this, _virtualFileSystem, _accountManager, titleFilePath, titleName, titleId, controlData);
+ _ = new GameTableContextMenu(this, _virtualFileSystem, _accountManager, _libHacHorizonManager.RyujinxClient, titleFilePath, titleName, titleId, controlData);
}
private void Load_Application_File(object sender, EventArgs args)
@@ -1211,15 +1227,15 @@ namespace Ryujinx.Ui
SystemVersion firmwareVersion = _contentManager.VerifyFirmwarePackage(filename);
- string dialogTitle = $"Install Firmware {firmwareVersion.VersionString}";
-
- if (firmwareVersion == null)
+ if (firmwareVersion is null)
{
GtkDialog.CreateErrorDialog($"A valid system firmware was not found in {filename}.");
return;
}
+ string dialogTitle = $"Install Firmware {firmwareVersion.VersionString}";
+
SystemVersion currentVersion = _contentManager.GetCurrentFirmwareVersion();
string dialogMessage = $"System version {firmwareVersion.VersionString} will be installed.";