aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/hle_ipc.cpp
diff options
context:
space:
mode:
authorMai <mathew1800@gmail.com>2022-11-09 03:25:53 +0000
committerGitHub <noreply@github.com>2022-11-09 03:25:53 +0000
commitad9e5bc5b7374d87d0b4f47ad7b1a6def78132c8 (patch)
tree58c88d7ca923789c9a5d5518d2af1e413887f451 /src/core/hle/kernel/hle_ipc.cpp
parentdc520a487d17ac377b26ee531d48f5ed64c42851 (diff)
parent6a0d8b2aa154921e8328dfab9450510ad8e1b5c8 (diff)
Merge pull request #9199 from liamwhite/service-oops
service_thread: fix deletion
Diffstat (limited to 'src/core/hle/kernel/hle_ipc.cpp')
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index fd354d484..06010b8d1 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -27,16 +27,12 @@ namespace Kernel {
SessionRequestHandler::SessionRequestHandler(KernelCore& kernel_, const char* service_name_,
ServiceThreadType thread_type)
- : kernel{kernel_} {
- if (thread_type == ServiceThreadType::CreateNew) {
- service_thread = kernel.CreateServiceThread(service_name_);
- } else {
- service_thread = kernel.GetDefaultServiceThread();
- }
-}
+ : kernel{kernel_}, service_thread{thread_type == ServiceThreadType::CreateNew
+ ? kernel.CreateServiceThread(service_name_)
+ : kernel.GetDefaultServiceThread()} {}
SessionRequestHandler::~SessionRequestHandler() {
- kernel.ReleaseServiceThread(service_thread.lock());
+ kernel.ReleaseServiceThread(service_thread);
}
void SessionRequestHandler::AcceptSession(KServerPort* server_port) {
@@ -49,7 +45,7 @@ void SessionRequestHandler::AcceptSession(KServerPort* server_port) {
void SessionRequestHandler::RegisterSession(KServerSession* server_session,
std::shared_ptr<SessionRequestManager> manager) {
manager->SetSessionHandler(shared_from_this());
- service_thread.lock()->RegisterServerSession(server_session, manager);
+ service_thread.RegisterServerSession(server_session, manager);
server_session->Close();
}