diff options
| author | Mary <me@thog.eu> | 2021-06-29 19:37:13 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-29 19:37:13 +0200 |
| commit | 00ce9eea620652b97b4d3e8cd9218c6fccff8b1c (patch) | |
| tree | f488b1b378a8ecbeaf54d5a7916062784a5588dc /Ryujinx.HLE/HOS/Horizon.cs | |
| parent | fbb4019ed5c12c4a888c7b09db648ac595366896 (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.cs | 9 |
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(); |
