mirror of
https://git.743378673.xyz/MeloNX/MeloNX.git
synced 2025-07-15 11:46:28 +02:00
Merge Latest Ryujinx (Unstable)
This commit is contained in:
parent
aaefc0a9e5
commit
12ab8bc3e2
1237 changed files with 48656 additions and 21399 deletions
|
@ -287,6 +287,10 @@ namespace Ryujinx.HLE.HOS.Services
|
|||
_wakeEvent.WritableEvent.Clear();
|
||||
}
|
||||
}
|
||||
else if (rc == KernelResult.PortRemoteClosed && signaledIndex >= 0 && SmObjectFactory != null)
|
||||
{
|
||||
DestroySession(handles[signaledIndex]);
|
||||
}
|
||||
|
||||
_selfProcess.CpuMemory.Write(messagePtr + 0x0, 0);
|
||||
_selfProcess.CpuMemory.Write(messagePtr + 0x4, 2 << 10);
|
||||
|
@ -299,6 +303,16 @@ namespace Ryujinx.HLE.HOS.Services
|
|||
Dispose();
|
||||
}
|
||||
|
||||
private void DestroySession(int serverSessionHandle)
|
||||
{
|
||||
_context.Syscall.CloseHandle(serverSessionHandle);
|
||||
|
||||
if (RemoveSessionObj(serverSessionHandle, out var session))
|
||||
{
|
||||
(session as IDisposable)?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private bool Process(int serverSessionHandle, ulong recvListAddr)
|
||||
{
|
||||
IpcMessage request = ReadRequest();
|
||||
|
@ -360,7 +374,7 @@ namespace Ryujinx.HLE.HOS.Services
|
|||
response.RawData = _responseDataStream.ToArray();
|
||||
}
|
||||
else if (request.Type == IpcMessageType.CmifControl ||
|
||||
request.Type == IpcMessageType.CmifControlWithContext)
|
||||
request.Type == IpcMessageType.CmifControlWithContext)
|
||||
{
|
||||
#pragma warning disable IDE0059 // Remove unnecessary value assignment
|
||||
uint magic = (uint)_requestDataReader.ReadUInt64();
|
||||
|
@ -412,11 +426,7 @@ namespace Ryujinx.HLE.HOS.Services
|
|||
}
|
||||
else if (request.Type == IpcMessageType.CmifCloseSession || request.Type == IpcMessageType.TipcCloseSession)
|
||||
{
|
||||
_context.Syscall.CloseHandle(serverSessionHandle);
|
||||
if (RemoveSessionObj(serverSessionHandle, out var session))
|
||||
{
|
||||
(session as IDisposable)?.Dispose();
|
||||
}
|
||||
DestroySession(serverSessionHandle);
|
||||
shouldReply = false;
|
||||
}
|
||||
// If the type is past 0xF, we are using TIPC
|
||||
|
@ -464,9 +474,9 @@ namespace Ryujinx.HLE.HOS.Services
|
|||
{
|
||||
const int MessageSize = 0x100;
|
||||
|
||||
using IMemoryOwner<byte> reqDataOwner = ByteMemoryPool.Rent(MessageSize);
|
||||
using SpanOwner<byte> reqDataOwner = SpanOwner<byte>.Rent(MessageSize);
|
||||
|
||||
Span<byte> reqDataSpan = reqDataOwner.Memory.Span;
|
||||
Span<byte> reqDataSpan = reqDataOwner.Span;
|
||||
|
||||
_selfProcess.CpuMemory.Read(_selfThread.TlsAddress, reqDataSpan);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue