aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Horizon.cs
diff options
context:
space:
mode:
authorMary <me@thog.eu>2021-06-29 19:37:13 +0200
committerGitHub <noreply@github.com>2021-06-29 19:37:13 +0200
commit00ce9eea620652b97b4d3e8cd9218c6fccff8b1c (patch)
treef488b1b378a8ecbeaf54d5a7916062784a5588dc /Ryujinx.HLE/HOS/Horizon.cs
parentfbb4019ed5c12c4a888c7b09db648ac595366896 (diff)
Fix disposing of IPC sessions server at emulation stop (#2334)
Diffstat (limited to 'Ryujinx.HLE/HOS/Horizon.cs')
-rw-r--r--Ryujinx.HLE/HOS/Horizon.cs9
1 files changed, 4 insertions, 5 deletions
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<NfpDevice> 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();