aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/FileSystem
diff options
context:
space:
mode:
authorAc_K <Acoustik666@gmail.com>2022-03-22 20:46:16 +0100
committerGitHub <noreply@github.com>2022-03-22 20:46:16 +0100
commite3b36db71c62a34a26b30683dd5ad5410c97cc9c (patch)
tree18feea12db46ad2ddcdc207e9fd0e805fd98b7da /Ryujinx.HLE/FileSystem
parentba0171d05464201c1513386b7d0b69b5ea956426 (diff)
hle: Some cleanup (#3210)1.1.83
* hle: Some cleanup This PR cleaned up a bit the HLE folder and the VirtualFileSystem one, since we use LibHac, we can use some class of it directly instead of duplicate things. The "Content" of VFS folder is removed since it should be handled in the NCM service directly. A larger cleanup should be done later since there is still be duplicated code here and there. * Fix Headless.SDL2 * Addresses gdkchan feedback
Diffstat (limited to 'Ryujinx.HLE/FileSystem')
-rw-r--r--Ryujinx.HLE/FileSystem/Content/ContentPath.cs19
-rw-r--r--Ryujinx.HLE/FileSystem/Content/LocationHelper.cs91
-rw-r--r--Ryujinx.HLE/FileSystem/Content/StorageId.cs9
-rw-r--r--Ryujinx.HLE/FileSystem/Content/TitleType.cs15
-rw-r--r--Ryujinx.HLE/FileSystem/ContentManager.cs (renamed from Ryujinx.HLE/FileSystem/Content/ContentManager.cs)19
-rw-r--r--Ryujinx.HLE/FileSystem/ContentPath.cs82
-rw-r--r--Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs5
-rw-r--r--Ryujinx.HLE/FileSystem/LocationEntry.cs (renamed from Ryujinx.HLE/FileSystem/Content/LocationEntry.cs)2
-rw-r--r--Ryujinx.HLE/FileSystem/SaveDataType.cs12
-rw-r--r--Ryujinx.HLE/FileSystem/SaveInfo.cs27
-rw-r--r--Ryujinx.HLE/FileSystem/SaveSpaceId.cs10
-rw-r--r--Ryujinx.HLE/FileSystem/StorageId.cs12
-rw-r--r--Ryujinx.HLE/FileSystem/SystemVersion.cs (renamed from Ryujinx.HLE/FileSystem/Content/SystemVersion.cs)3
-rw-r--r--Ryujinx.HLE/FileSystem/VirtualFileSystem.cs88
14 files changed, 126 insertions, 268 deletions
diff --git a/Ryujinx.HLE/FileSystem/Content/ContentPath.cs b/Ryujinx.HLE/FileSystem/Content/ContentPath.cs
deleted file mode 100644
index 1e2c8ab3..00000000
--- a/Ryujinx.HLE/FileSystem/Content/ContentPath.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-namespace Ryujinx.HLE.FileSystem.Content
-{
- static class ContentPath
- {
- public const string SystemContent = "@SystemContent";
- public const string UserContent = "@UserContent";
- public const string SdCardContent = "@SdCardContent";
- public const string SdCard = "@SdCard";
- public const string CalibFile = "@CalibFile";
- public const string Safe = "@Safe";
- public const string User = "@User";
- public const string System = "@System";
- public const string Host = "@Host";
- public const string GamecardApp = "@GcApp";
- public const string GamecardContents = "@GcS00000001";
- public const string GamecardUpdate = "@upp";
- public const string RegisteredUpdate = "@RegUpdate";
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/FileSystem/Content/LocationHelper.cs b/Ryujinx.HLE/FileSystem/Content/LocationHelper.cs
deleted file mode 100644
index c522b053..00000000
--- a/Ryujinx.HLE/FileSystem/Content/LocationHelper.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System;
-using System.IO;
-
-using static Ryujinx.HLE.FileSystem.VirtualFileSystem;
-
-namespace Ryujinx.HLE.FileSystem.Content
-{
- internal static class LocationHelper
- {
- public static string GetRealPath(VirtualFileSystem fileSystem, string switchContentPath)
- {
- string basePath = fileSystem.GetBasePath();
-
- switch (switchContentPath)
- {
- case ContentPath.SystemContent:
- return Path.Combine(basePath, SystemNandPath, "Contents");
- case ContentPath.UserContent:
- return Path.Combine(basePath, UserNandPath, "Contents");
- case ContentPath.SdCardContent:
- return Path.Combine(fileSystem.GetSdCardPath(), "Nintendo", "Contents");
- case ContentPath.System:
- return Path.Combine(basePath, SystemNandPath);
- case ContentPath.User:
- return Path.Combine(basePath, UserNandPath);
- default:
- throw new NotSupportedException($"Content Path `{switchContentPath}` is not supported.");
- }
- }
-
- public static string GetContentPath(ContentStorageId contentStorageId)
- {
- switch (contentStorageId)
- {
- case ContentStorageId.NandSystem:
- return ContentPath.SystemContent;
- case ContentStorageId.NandUser:
- return ContentPath.UserContent;
- case ContentStorageId.SdCard:
- return ContentPath.SdCardContent;
- default:
- throw new NotSupportedException($"Content Storage `{contentStorageId}` is not supported.");
- }
- }
-
- public static string GetContentRoot(StorageId storageId)
- {
- switch (storageId)
- {
- case StorageId.NandSystem:
- return ContentPath.SystemContent;
- case StorageId.NandUser:
- return ContentPath.UserContent;
- case StorageId.SdCard:
- return ContentPath.SdCardContent;
- default:
- throw new NotSupportedException($"Storage Id `{storageId}` is not supported.");
- }
- }
-
- public static StorageId GetStorageId(string contentPathString)
- {
- string cleanedPath = contentPathString.Split(':')[0];
-
- switch (cleanedPath)
- {
- case ContentPath.SystemContent:
- case ContentPath.System:
- return StorageId.NandSystem;
-
- case ContentPath.UserContent:
- case ContentPath.User:
- return StorageId.NandUser;
-
- case ContentPath.SdCardContent:
- return StorageId.SdCard;
-
- case ContentPath.Host:
- return StorageId.Host;
-
- case ContentPath.GamecardApp:
- case ContentPath.GamecardContents:
- case ContentPath.GamecardUpdate:
- return StorageId.GameCard;
-
- default:
- return StorageId.None;
- }
- }
- }
-}
diff --git a/Ryujinx.HLE/FileSystem/Content/StorageId.cs b/Ryujinx.HLE/FileSystem/Content/StorageId.cs
deleted file mode 100644
index 4ff3dd65..00000000
--- a/Ryujinx.HLE/FileSystem/Content/StorageId.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Ryujinx.HLE.FileSystem.Content
-{
- public enum ContentStorageId
- {
- NandSystem,
- NandUser,
- SdCard
- }
-}
diff --git a/Ryujinx.HLE/FileSystem/Content/TitleType.cs b/Ryujinx.HLE/FileSystem/Content/TitleType.cs
deleted file mode 100644
index 6ad26c9c..00000000
--- a/Ryujinx.HLE/FileSystem/Content/TitleType.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace Ryujinx.HLE.FileSystem.Content
-{
- enum TitleType
- {
- SystemPrograms = 0x01,
- SystemDataArchive = 0x02,
- SystemUpdate = 0x03,
- FirmwarePackageA = 0x04,
- FirmwarePackageB = 0x05,
- RegularApplication = 0x80,
- Update = 0x81,
- AddOnContent = 0x82,
- DeltaTitle = 0x83
- }
-}
diff --git a/Ryujinx.HLE/FileSystem/Content/ContentManager.cs b/Ryujinx.HLE/FileSystem/ContentManager.cs
index 8ac31a4c..2544cdda 100644
--- a/Ryujinx.HLE/FileSystem/Content/ContentManager.cs
+++ b/Ryujinx.HLE/FileSystem/ContentManager.cs
@@ -20,7 +20,7 @@ using System.IO.Compression;
using System.Linq;
using Path = System.IO.Path;
-namespace Ryujinx.HLE.FileSystem.Content
+namespace Ryujinx.HLE.FileSystem
{
public class ContentManager
{
@@ -110,8 +110,8 @@ namespace Ryujinx.HLE.FileSystem.Content
try
{
- contentPathString = LocationHelper.GetContentRoot(storageId);
- contentDirectory = LocationHelper.GetRealPath(_virtualFileSystem, contentPathString);
+ contentPathString = ContentPath.GetContentPath(storageId);
+ contentDirectory = ContentPath.GetRealPath(_virtualFileSystem, contentPathString);
registeredDirectory = Path.Combine(contentDirectory, "registered");
}
catch (NotSupportedException)
@@ -367,8 +367,7 @@ namespace Ryujinx.HLE.FileSystem.Content
{
LocationEntry locationEntry = GetLocation(titleId, contentType, storageId);
- return locationEntry.ContentPath != null ?
- LocationHelper.GetStorageId(locationEntry.ContentPath) : StorageId.None;
+ return locationEntry.ContentPath != null ? ContentPath.GetStorageId(locationEntry.ContentPath) : StorageId.None;
}
}
@@ -493,8 +492,8 @@ namespace Ryujinx.HLE.FileSystem.Content
public void InstallFirmware(string firmwareSource)
{
- string contentPathString = LocationHelper.GetContentRoot(StorageId.NandSystem);
- string contentDirectory = LocationHelper.GetRealPath(_virtualFileSystem, contentPathString);
+ string contentPathString = ContentPath.GetContentPath(StorageId.BuiltInSystem);
+ string contentDirectory = ContentPath.GetRealPath(_virtualFileSystem, contentPathString);
string registeredDirectory = Path.Combine(contentDirectory, "registered");
string temporaryDirectory = Path.Combine(contentDirectory, "temp");
@@ -998,9 +997,9 @@ namespace Ryujinx.HLE.FileSystem.Content
foreach (var entry in updateNcas)
{
- foreach (var nca in entry.Value)
+ foreach (var (type, path) in entry.Value)
{
- extraNcas += nca.path + Environment.NewLine;
+ extraNcas += path + Environment.NewLine;
}
}
@@ -1019,7 +1018,7 @@ namespace Ryujinx.HLE.FileSystem.Content
lock (_lock)
{
- var locationEnties = _locationEntries[StorageId.NandSystem];
+ var locationEnties = _locationEntries[StorageId.BuiltInSystem];
foreach (var entry in locationEnties)
{
diff --git a/Ryujinx.HLE/FileSystem/ContentPath.cs b/Ryujinx.HLE/FileSystem/ContentPath.cs
new file mode 100644
index 00000000..c8663081
--- /dev/null
+++ b/Ryujinx.HLE/FileSystem/ContentPath.cs
@@ -0,0 +1,82 @@
+using LibHac.Fs;
+using LibHac.Ncm;
+using Ryujinx.Common.Configuration;
+using System;
+
+using static Ryujinx.HLE.FileSystem.VirtualFileSystem;
+using Path = System.IO.Path;
+
+namespace Ryujinx.HLE.FileSystem
+{
+ internal static class ContentPath
+ {
+ public const string SystemContent = "@SystemContent";
+ public const string UserContent = "@UserContent";
+ public const string SdCardContent = "@SdCardContent";
+ public const string SdCard = "@Sdcard";
+ public const string CalibFile = "@CalibFile";
+ public const string Safe = "@Safe";
+ public const string User = "@User";
+ public const string System = "@System";
+ public const string Host = "@Host";
+ public const string GamecardApp = "@GcApp";
+ public const string GamecardContents = "@GcS00000001";
+ public const string GamecardUpdate = "@upp";
+ public const string RegisteredUpdate = "@RegUpdate";
+
+ public const string Nintendo = "Nintendo";
+ public const string Contents = "Contents";
+
+ public static string GetRealPath(VirtualFileSystem fileSystem, string switchContentPath)
+ {
+ return switchContentPath switch
+ {
+ SystemContent => Path.Combine(AppDataManager.BaseDirPath, SystemNandPath, Contents),
+ UserContent => Path.Combine(AppDataManager.BaseDirPath, UserNandPath, Contents),
+ SdCardContent => Path.Combine(fileSystem.GetSdCardPath(), Nintendo, Contents),
+ System => Path.Combine(AppDataManager.BaseDirPath, SystemNandPath),
+ User => Path.Combine(AppDataManager.BaseDirPath, UserNandPath),
+ _ => throw new NotSupportedException($"Content Path \"`{switchContentPath}`\" is not supported.")
+ };
+ }
+
+ public static string GetContentPath(ContentStorageId contentStorageId)
+ {
+ return contentStorageId switch
+ {
+ ContentStorageId.System => SystemContent,
+ ContentStorageId.User => UserContent,
+ ContentStorageId.SdCard => SdCardContent,
+ _ => throw new NotSupportedException($"Content Storage Id \"`{contentStorageId}`\" is not supported.")
+ };
+ }
+
+ public static string GetContentPath(StorageId storageId)
+ {
+ return storageId switch
+ {
+ StorageId.BuiltInSystem => SystemContent,
+ StorageId.BuiltInUser => UserContent,
+ StorageId.SdCard => SdCardContent,
+ _ => throw new NotSupportedException($"Storage Id \"`{storageId}`\" is not supported.")
+ };
+ }
+
+ public static StorageId GetStorageId(string contentPathString)
+ {
+ return contentPathString.Split(':')[0] switch
+ {
+ SystemContent or
+ System => StorageId.BuiltInSystem,
+ UserContent or
+ User => StorageId.BuiltInUser,
+ SdCardContent => StorageId.SdCard,
+ Host => StorageId.Host,
+ GamecardApp or
+ GamecardContents or
+ GamecardUpdate => StorageId.GameCard,
+ _ => StorageId.None
+ };
+ }
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs b/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs
index 60c3cfdb..f32dc2d7 100644
--- a/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs
+++ b/Ryujinx.HLE/FileSystem/EncryptedFileSystemCreator.cs
@@ -8,7 +8,6 @@ namespace Ryujinx.HLE.FileSystem
{
public class EncryptedFileSystemCreator : IEncryptedFileSystemCreator
{
-
public Result Create(ref SharedRef<IFileSystem> outEncryptedFileSystem,
ref SharedRef<IFileSystem> baseFileSystem, IEncryptedFileSystemCreator.KeyId idIndex,
in EncryptionSeed encryptionSeed)
@@ -18,10 +17,10 @@ namespace Ryujinx.HLE.FileSystem
return ResultFs.InvalidArgument.Log();
}
- // Todo: Reenable when AesXtsFileSystem is fixed
+ // TODO: Reenable when AesXtsFileSystem is fixed.
outEncryptedFileSystem = SharedRef<IFileSystem>.CreateMove(ref baseFileSystem);
return Result.Success;
}
}
-}
+} \ No newline at end of file
diff --git a/Ryujinx.HLE/FileSystem/Content/LocationEntry.cs b/Ryujinx.HLE/FileSystem/LocationEntry.cs
index bf938746..45cbc8cd 100644
--- a/Ryujinx.HLE/FileSystem/Content/LocationEntry.cs
+++ b/Ryujinx.HLE/FileSystem/LocationEntry.cs
@@ -1,6 +1,6 @@
using LibHac.FsSystem;
-namespace Ryujinx.HLE.FileSystem.Content
+namespace Ryujinx.HLE.FileSystem
{
public struct LocationEntry
{
diff --git a/Ryujinx.HLE/FileSystem/SaveDataType.cs b/Ryujinx.HLE/FileSystem/SaveDataType.cs
deleted file mode 100644
index 2207fc23..00000000
--- a/Ryujinx.HLE/FileSystem/SaveDataType.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Ryujinx.HLE.FileSystem
-{
- enum SaveDataType : byte
- {
- SystemSaveData,
- SaveData,
- BcatDeliveryCacheStorage,
- DeviceSaveData,
- TemporaryStorage,
- CacheStorage
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/FileSystem/SaveInfo.cs b/Ryujinx.HLE/FileSystem/SaveInfo.cs
deleted file mode 100644
index 96f2f020..00000000
--- a/Ryujinx.HLE/FileSystem/SaveInfo.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using Ryujinx.HLE.HOS.Services.Account.Acc;
-
-namespace Ryujinx.HLE.FileSystem
-{
- struct SaveInfo
- {
- public ulong TitleId { get; private set; }
- public long SaveId { get; private set; }
- public SaveDataType SaveDataType { get; private set; }
- public SaveSpaceId SaveSpaceId { get; private set; }
- public UserId UserId { get; private set; }
-
- public SaveInfo(
- ulong titleId,
- long saveId,
- SaveDataType saveDataType,
- SaveSpaceId saveSpaceId,
- UserId userId = new UserId())
- {
- TitleId = titleId;
- SaveId = saveId;
- SaveDataType = saveDataType;
- SaveSpaceId = saveSpaceId;
- UserId = userId;
- }
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/FileSystem/SaveSpaceId.cs b/Ryujinx.HLE/FileSystem/SaveSpaceId.cs
deleted file mode 100644
index d51922df..00000000
--- a/Ryujinx.HLE/FileSystem/SaveSpaceId.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace Ryujinx.HLE.FileSystem
-{
- enum SaveSpaceId
- {
- NandSystem,
- NandUser,
- SdCard,
- TemporaryStorage
- }
-}
diff --git a/Ryujinx.HLE/FileSystem/StorageId.cs b/Ryujinx.HLE/FileSystem/StorageId.cs
deleted file mode 100644
index d4043e2c..00000000
--- a/Ryujinx.HLE/FileSystem/StorageId.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Ryujinx.HLE.FileSystem
-{
- public enum StorageId
- {
- None,
- Host,
- GameCard,
- NandSystem,
- NandUser,
- SdCard
- }
-}
diff --git a/Ryujinx.HLE/FileSystem/Content/SystemVersion.cs b/Ryujinx.HLE/FileSystem/SystemVersion.cs
index 3f19e135..a7926d5d 100644
--- a/Ryujinx.HLE/FileSystem/Content/SystemVersion.cs
+++ b/Ryujinx.HLE/FileSystem/SystemVersion.cs
@@ -1,8 +1,7 @@
using Ryujinx.HLE.Utilities;
using System.IO;
-using System.Text;
-namespace Ryujinx.HLE.FileSystem.Content
+namespace Ryujinx.HLE.FileSystem
{
public class SystemVersion
{
diff --git a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs
index 9359b03c..001a1f5f 100644
--- a/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs
+++ b/Ryujinx.HLE/FileSystem/VirtualFileSystem.cs
@@ -13,7 +13,6 @@ using LibHac.Tools.Fs;
using LibHac.Tools.FsSystem;
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
-using Ryujinx.HLE.FileSystem.Content;
using Ryujinx.HLE.HOS;
using System;
using System.Buffers.Text;
@@ -28,20 +27,29 @@ namespace Ryujinx.HLE.FileSystem
{
public class VirtualFileSystem : IDisposable
{
- public const string NandPath = AppDataManager.DefaultNandDir;
- public const string SdCardPath = AppDataManager.DefaultSdcardDir;
+ public static string SafeNandPath = Path.Combine(AppDataManager.DefaultNandDir, "safe");
+ public static string SystemNandPath = Path.Combine(AppDataManager.DefaultNandDir, "system");
+ public static string UserNandPath = Path.Combine(AppDataManager.DefaultNandDir, "user");
- public static string SafeNandPath = Path.Combine(NandPath, "safe");
- public static string SystemNandPath = Path.Combine(NandPath, "system");
- public static string UserNandPath = Path.Combine(NandPath, "user");
+ public KeySet KeySet { get; private set; }
+ public EmulatedGameCard GameCard { get; private set; }
+ public EmulatedSdCard SdCard { get; private set; }
+ public ModLoader ModLoader { get; private set; }
+ public Stream RomFs { get; private set; }
private static bool _isInitialized = false;
- public KeySet KeySet { get; private set; }
- public EmulatedGameCard GameCard { get; private set; }
- public EmulatedSdCard SdCard { get; private set; }
+ public static VirtualFileSystem CreateInstance()
+ {
+ if (_isInitialized)
+ {
+ throw new InvalidOperationException("VirtualFileSystem can only be instantiated once!");
+ }
- public ModLoader ModLoader { get; private set; }
+ _isInitialized = true;
+
+ return new VirtualFileSystem();
+ }
private VirtualFileSystem()
{
@@ -49,8 +57,6 @@ namespace Ryujinx.HLE.FileSystem
ModLoader = new ModLoader(); // Should only be created once
}
- public Stream RomFs { get; private set; }
-
public void LoadRomFs(string fileName)
{
RomFs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
@@ -79,7 +85,7 @@ namespace Ryujinx.HLE.FileSystem
string fullPath = Path.GetFullPath(Path.Combine(basePath, fileName));
- if (!fullPath.StartsWith(GetBasePath()))
+ if (!fullPath.StartsWith(AppDataManager.BaseDirPath))
{
return null;
}
@@ -87,14 +93,8 @@ namespace Ryujinx.HLE.FileSystem
return fullPath;
}
- internal string GetBasePath() => AppDataManager.BaseDirPath;
- internal string GetSdCardPath() => MakeFullPath(SdCardPath);
- public string GetNandPath() => MakeFullPath(NandPath);
-
- public string GetFullPartitionPath(string partitionPath)
- {
- return MakeFullPath(partitionPath);
- }
+ internal string GetSdCardPath() => MakeFullPath(AppDataManager.DefaultSdcardDir);
+ public string GetNandPath() => MakeFullPath(AppDataManager.DefaultNandDir);
public string SwitchPathToSystemPath(string switchPath)
{
@@ -110,7 +110,7 @@ namespace Ryujinx.HLE.FileSystem
public string SystemPathToSwitchPath(string systemPath)
{
- string baseSystemPath = GetBasePath() + Path.DirectorySeparatorChar;
+ string baseSystemPath = AppDataManager.BaseDirPath + Path.DirectorySeparatorChar;
if (systemPath.StartsWith(baseSystemPath))
{
@@ -136,8 +136,7 @@ namespace Ryujinx.HLE.FileSystem
switch (path)
{
case ContentPath.SdCard:
- case "@Sdcard":
- path = SdCardPath;
+ path = AppDataManager.DefaultSdcardDir;
break;
case ContentPath.User:
path = UserNandPath;
@@ -146,7 +145,7 @@ namespace Ryujinx.HLE.FileSystem
path = SystemNandPath;
break;
case ContentPath.SdCardContent:
- path = Path.Combine(SdCardPath, "Nintendo", "Contents");
+ path = Path.Combine(AppDataManager.DefaultSdcardDir, "Nintendo", "Contents");
break;
case ContentPath.UserContent:
path = Path.Combine(UserNandPath, "Contents");
@@ -156,27 +155,19 @@ namespace Ryujinx.HLE.FileSystem
break;
}
- string fullPath = Path.Combine(GetBasePath(), path);
+ string fullPath = Path.Combine(AppDataManager.BaseDirPath, path);
- if (isDirectory)
+ if (isDirectory && !Directory.Exists(fullPath))
{
- if (!Directory.Exists(fullPath))
- {
- Directory.CreateDirectory(fullPath);
- }
+ Directory.CreateDirectory(fullPath);
}
return fullPath;
}
- public DriveInfo GetDrive()
- {
- return new DriveInfo(Path.GetPathRoot(GetBasePath()));
- }
-
public void InitializeFsServer(LibHac.Horizon horizon, out HorizonClient fsServerClient)
{
- LocalFileSystem serverBaseFs = new LocalFileSystem(GetBasePath());
+ LocalFileSystem serverBaseFs = new LocalFileSystem(AppDataManager.BaseDirPath);
fsServerClient = horizon.CreatePrivilegedHorizonClient();
var fsServer = new FileSystemServer(fsServerClient);
@@ -505,7 +496,7 @@ namespace Ryujinx.HLE.FileSystem
bool canFixBySaveDataId = extraData.Attribute.StaticSaveDataId == 0 && info.StaticSaveDataId != 0;
- bool hasEmptyOwnerId = extraData.OwnerId == 0 && info.Type != LibHac.Fs.SaveDataType.System;
+ bool hasEmptyOwnerId = extraData.OwnerId == 0 && info.Type != SaveDataType.System;
if (!canFixByProgramId && !canFixBySaveDataId && !hasEmptyOwnerId)
{
@@ -523,7 +514,7 @@ namespace Ryujinx.HLE.FileSystem
// The rest of the extra data can't be created from the save data info.
// On user saves the owner ID will almost certainly be the same as the program ID.
- if (info.Type != LibHac.Fs.SaveDataType.System)
+ if (info.Type != SaveDataType.System)
{
extraData.OwnerId = info.ProgramId.Value;
}
@@ -580,11 +571,6 @@ namespace Ryujinx.HLE.FileSystem
}
};
- public void Unload()
- {
- RomFs?.Dispose();
- }
-
public void Dispose()
{
Dispose(true);
@@ -594,20 +580,8 @@ namespace Ryujinx.HLE.FileSystem
{
if (disposing)
{
- Unload();
+ RomFs?.Dispose();
}
}
-
- public static VirtualFileSystem CreateInstance()
- {
- if (_isInitialized)
- {
- throw new InvalidOperationException("VirtualFileSystem can only be instantiated once!");
- }
-
- _isInitialized = true;
-
- return new VirtualFileSystem();
- }
}
} \ No newline at end of file