diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2024-07-20 16:17:40 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-20 16:17:40 -0300 |
| commit | ce09450743ad36f6478af1a21b5fbff283f08e59 (patch) | |
| tree | 2bcd14bc6fe4f9163fd761f32e7993780017f965 /src/Ryujinx.Horizon/Sdk/Sf | |
| parent | 2cb80f37d42261bb583e518eb729b62a442cdb15 (diff) | |
Unlink server sessions from multi-wait when service stops processing requests (#7072)
Diffstat (limited to 'src/Ryujinx.Horizon/Sdk/Sf')
| -rw-r--r-- | src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs index 9886e1cb..570e3c80 100644 --- a/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs +++ b/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs @@ -3,6 +3,7 @@ using Ryujinx.Horizon.Sdk.OsTypes; using Ryujinx.Horizon.Sdk.Sf.Cmif; using Ryujinx.Horizon.Sdk.Sm; using System; +using System.Linq; namespace Ryujinx.Horizon.Sdk.Sf.Hipc { @@ -116,6 +117,18 @@ namespace Ryujinx.Horizon.Sdk.Sf.Hipc while (WaitAndProcessRequestsImpl()) { } + + // Unlink pending sessions, dispose expects them to be already unlinked. + + ServerSession[] serverSessions = Enumerable.OfType<ServerSession>(_multiWait.MultiWaits).ToArray(); + + foreach (ServerSession serverSession in serverSessions) + { + if (serverSession.IsLinked) + { + serverSession.UnlinkFromMultiWaitHolder(); + } + } } public void WaitAndProcessRequests() |
