diff options
| author | Mary <1760003+Thog@users.noreply.github.com> | 2021-07-13 16:48:54 +0200 |
|---|---|---|
| committer | Mary <1760003+Thog@users.noreply.github.com> | 2021-07-13 16:48:54 +0200 |
| commit | 208ba1dde2b9a4d31446ace2bba8f0d641d2e300 (patch) | |
| tree | c7478e7eb87061400bab37daf4f2f69cf387d9f2 /Ryujinx.HLE/HOS/Services/Fs/FileSystemProxy/IDirectory.cs | |
| parent | 997380d48cb3b74e2438cee7fc3b017d6b59b714 (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.cs | 29 |
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(); - } - } } } |
