forked from Mirror/Ryujinx
Fix race in SM initialization (#2280)
This commit is contained in:
parent
ebdbaa6db0
commit
a8022ca3a1
2 changed files with 4 additions and 3 deletions
|
@ -274,7 +274,7 @@ namespace Ryujinx.HLE.HOS
|
|||
public void InitializeServices()
|
||||
{
|
||||
IUserInterface sm = new IUserInterface(KernelContext);
|
||||
sm.TrySetServer(new ServerBase(KernelContext, "SmServer") { SmObjectFactory = () => new IUserInterface(KernelContext) });
|
||||
sm.TrySetServer(new ServerBase(KernelContext, "SmServer", () => new IUserInterface(KernelContext)));
|
||||
|
||||
// Wait until SM server thread is done with initialization,
|
||||
// only then doing connections to SM is safe.
|
||||
|
|
|
@ -38,13 +38,14 @@ namespace Ryujinx.HLE.HOS.Services
|
|||
private readonly Dictionary<int, Func<IpcService>> _ports = new Dictionary<int, Func<IpcService>>();
|
||||
|
||||
public ManualResetEvent InitDone { get; }
|
||||
public Func<IpcService> SmObjectFactory { get; set; }
|
||||
public Func<IpcService> SmObjectFactory { get; }
|
||||
public string Name { get; }
|
||||
|
||||
public ServerBase(KernelContext context, string name)
|
||||
public ServerBase(KernelContext context, string name, Func<IpcService> smObjectFactory = null)
|
||||
{
|
||||
InitDone = new ManualResetEvent(false);
|
||||
Name = name;
|
||||
SmObjectFactory = smObjectFactory;
|
||||
_context = context;
|
||||
|
||||
const ProcessCreationFlags flags =
|
||||
|
|
Reference in a new issue