aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs')
-rw-r--r--src/Ryujinx.Horizon/Sdk/Sf/Hipc/ServerManagerBase.cs13
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()