IPC refactor part 2: Use ReplyAndReceive on HLE services and remove special handling from kernel (#1458)
* IPC refactor part 2: Use ReplyAndReceive on HLE services and remove special handling from kernel * Fix for applet transfer memory + some nits * Keep handles if possible to avoid server handle table exhaustion * Fix IPC ZeroFill bug * am: Correctly implement CreateManagedDisplayLayer and implement CreateManagedDisplaySeparableLayer CreateManagedDisplaySeparableLayer is requires since 10.x+ when appletResourceUserId != 0 * Make it exit properly * Make ServiceNotImplementedException show the full message again * Allow yielding execution to avoid starving other threads * Only wait if active * Merge IVirtualMemoryManager and IAddressSpaceManager * Fix Ro loading data from the wrong process Co-authored-by: Thog <me@thog.eu>
This commit is contained in:
parent
461c24092a
commit
cf6cd71488
115 changed files with 2356 additions and 1088 deletions
|
@ -120,11 +120,11 @@ namespace Ryujinx.HLE.HOS
|
|||
iirsPageList.AddRange(iirsPa, IirsSize / KMemoryManager.PageSize);
|
||||
timePageList.AddRange(timePa, TimeSize / KMemoryManager.PageSize);
|
||||
|
||||
HidSharedMem = new KSharedMemory(KernelContext, hidPageList, 0, 0, MemoryPermission.Read);
|
||||
FontSharedMem = new KSharedMemory(KernelContext, fontPageList, 0, 0, MemoryPermission.Read);
|
||||
IirsSharedMem = new KSharedMemory(KernelContext, iirsPageList, 0, 0, MemoryPermission.Read);
|
||||
HidSharedMem = new KSharedMemory(KernelContext, hidPageList, 0, 0, KMemoryPermission.Read);
|
||||
FontSharedMem = new KSharedMemory(KernelContext, fontPageList, 0, 0, KMemoryPermission.Read);
|
||||
IirsSharedMem = new KSharedMemory(KernelContext, iirsPageList, 0, 0, KMemoryPermission.Read);
|
||||
|
||||
KSharedMemory timeSharedMemory = new KSharedMemory(KernelContext, timePageList, 0, 0, MemoryPermission.Read);
|
||||
KSharedMemory timeSharedMemory = new KSharedMemory(KernelContext, timePageList, 0, 0, KMemoryPermission.Read);
|
||||
|
||||
TimeServiceManager.Instance.Initialize(device, this, timeSharedMemory, timePa - DramMemoryMap.DramBase, TimeSize);
|
||||
|
||||
|
@ -134,8 +134,6 @@ namespace Ryujinx.HLE.HOS
|
|||
|
||||
Font = new SharedFontManager(device, fontPa - DramMemoryMap.DramBase);
|
||||
|
||||
IUserInterface.InitializePort(this);
|
||||
|
||||
VsyncEvent = new KEvent(KernelContext);
|
||||
|
||||
DisplayResolutionChangeEvent = new KEvent(KernelContext);
|
||||
|
@ -224,6 +222,16 @@ namespace Ryujinx.HLE.HOS
|
|||
AudioRendererManager.Initialize(writableEvents, devices);
|
||||
}
|
||||
|
||||
public void InitializeServices()
|
||||
{
|
||||
IUserInterface sm = new IUserInterface(KernelContext);
|
||||
|
||||
// Wait until SM server thread is done with initialization,
|
||||
// only then doing connections to SM is safe.
|
||||
sm.Server.InitDone.WaitOne();
|
||||
sm.Server.InitDone.Dispose();
|
||||
}
|
||||
|
||||
public void LoadKip(string kipPath)
|
||||
{
|
||||
using IStorage kipFile = new LocalStorage(kipPath, FileAccess.Read);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue