From 00ce9eea620652b97b4d3e8cd9218c6fccff8b1c Mon Sep 17 00:00:00 2001 From: Mary Date: Tue, 29 Jun 2021 19:37:13 +0200 Subject: Fix disposing of IPC sessions server at emulation stop (#2334) --- Ryujinx.HLE/HOS/Horizon.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'Ryujinx.HLE/HOS/Horizon.cs') diff --git a/Ryujinx.HLE/HOS/Horizon.cs b/Ryujinx.HLE/HOS/Horizon.cs index a4ed7c37..916ed797 100644 --- a/Ryujinx.HLE/HOS/Horizon.cs +++ b/Ryujinx.HLE/HOS/Horizon.cs @@ -70,6 +70,7 @@ namespace Ryujinx.HLE.HOS internal List NfpDevices { get; private set; } + internal ServerBase SmServer { get; private set; } internal ServerBase BsdServer { get; private set; } internal ServerBase AudRenServer { get; private set; } internal ServerBase AudOutServer { get; private set; } @@ -284,13 +285,11 @@ namespace Ryujinx.HLE.HOS public void InitializeServices() { - IUserInterface sm = new IUserInterface(KernelContext); - sm.TrySetServer(new ServerBase(KernelContext, "SmServer", () => new IUserInterface(KernelContext))); + SmServer = new ServerBase(KernelContext, "SmServer", () => 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(); + SmServer.InitDone.WaitOne(); BsdServer = new ServerBase(KernelContext, "BsdServer"); AudRenServer = new ServerBase(KernelContext, "AudioRendererServer"); @@ -419,7 +418,7 @@ namespace Ryujinx.HLE.HOS SurfaceFlinger.Dispose(); // Terminate HLE services (must be done after the application is already terminated, - // otherwise the application will receive errors due to service termination. + // otherwise the application will receive errors due to service termination). foreach (KProcess process in KernelContext.Processes.Values.Where(x => !x.Flags.HasFlag(ProcessCreationFlags.IsApplication))) { process.Terminate(); -- cgit v1.2.3