aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs
diff options
context:
space:
mode:
authorMary <1760003+Thog@users.noreply.github.com>2021-07-13 16:48:54 +0200
committerMary <1760003+Thog@users.noreply.github.com>2021-07-13 16:48:54 +0200
commit208ba1dde2b9a4d31446ace2bba8f0d641d2e300 (patch)
treec7478e7eb87061400bab37daf4f2f69cf387d9f2 /Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs
parent997380d48cb3b74e2438cee7fc3b017d6b59b714 (diff)
Revert LibHac update
Users are facing save destruction on failing extra data update apparently
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs')
-rw-r--r--Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs29
1 files changed, 12 insertions, 17 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs b/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs
index 99e545b1..565ddc4c 100644
--- a/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs
+++ b/Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs
@@ -1,13 +1,15 @@
using LibHac;
-using LibHac.Sf;
+using LibHac.Fs;
+using System;
+using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
{
- class IDirectory : DisposableIpcService
+ class IDirectory : IpcService
{
- private ReferenceCountedDisposable<LibHac.FsSrv.Sf.IDirectory> _baseDirectory;
+ private LibHac.Fs.Fsa.IDirectory _baseDirectory;
- public IDirectory(ReferenceCountedDisposable<LibHac.FsSrv.Sf.IDirectory> directory)
+ public IDirectory(LibHac.Fs.Fsa.IDirectory directory)
{
_baseDirectory = directory;
}
@@ -17,13 +19,14 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
public ResultCode Read(ServiceCtx context)
{
ulong bufferPosition = context.Request.ReceiveBuff[0].Position;
- ulong bufferLen = context.Request.ReceiveBuff[0].Size;
+ ulong bufferLen = context.Request.ReceiveBuff[0].Size;
- byte[] entryBuffer = new byte[bufferLen];
+ byte[] entriesBytes = new byte[bufferLen];
+ Span<DirectoryEntry> entries = MemoryMarshal.Cast<byte, DirectoryEntry>(entriesBytes);
- Result result = _baseDirectory.Target.Read(out long entriesRead, new OutBuffer(entryBuffer));
+ Result result = _baseDirectory.Read(out long entriesRead, entries);
- context.Memory.Write(bufferPosition, entryBuffer);
+ context.Memory.Write(bufferPosition, entriesBytes);
context.ResponseData.Write(entriesRead);
return (ResultCode)result.Value;
@@ -33,19 +36,11 @@ namespace Ryujinx.HLE.HOS.Services.Fs.FileSystemProxy
// GetEntryCount() -> u64
public ResultCode GetEntryCount(ServiceCtx context)
{
- Result result = _baseDirectory.Target.GetEntryCount(out long entryCount);
+ Result result = _baseDirectory.GetEntryCount(out long entryCount);
context.ResponseData.Write(entryCount);
return (ResultCode)result.Value;
}
-
- protected override void Dispose(bool isDisposing)
- {
- if (isDisposing)
- {
- _baseDirectory?.Dispose();
- }
- }
}
}