From f55fc850a245921cc2e89d281ff8bf81380f007b Mon Sep 17 00:00:00 2001 From: bunnei Date: Wed, 6 Apr 2022 17:36:19 -0700 Subject: hle: kernel: hle_ipc: HasSessionRequestHandler: Check if domain handler is expired rather than locking. --- src/core/hle/kernel/hle_ipc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/core/hle/kernel/hle_ipc.cpp') diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index b547a3463..7692d02e1 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp @@ -51,7 +51,7 @@ bool SessionRequestManager::HasSessionRequestHandler(const HLERequestContext& co LOG_CRITICAL(IPC, "object_id {} is too big!", object_id); return false; } - return DomainHandler(object_id - 1).lock() != nullptr; + return !DomainHandler(object_id - 1).expired(); } else { return session_handler != nullptr; } -- cgit v1.2.3 From a7f73d606f596ab73cf794a76c06cd955033cada Mon Sep 17 00:00:00 2001 From: bunnei Date: Wed, 6 Apr 2022 17:44:06 -0700 Subject: hle: kernel: Unify and integrate reference tracking for KServerPort/KServerSession. - These are not managed elsewhere, and need to be tracked and closed on emulation shutdown. --- src/core/hle/kernel/hle_ipc.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/core/hle/kernel/hle_ipc.cpp') diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index 7692d02e1..5828ac923 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp @@ -59,6 +59,9 @@ bool SessionRequestManager::HasSessionRequestHandler(const HLERequestContext& co void SessionRequestHandler::ClientConnected(KServerSession* session) { session->ClientConnected(shared_from_this()); + + // Ensure our server session is tracked globally. + kernel.RegisterServerObject(session); } void SessionRequestHandler::ClientDisconnected(KServerSession* session) { -- cgit v1.2.3