summaryrefslogtreecommitdiff
path: root/src/core/hle/ipc_helpers.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/ipc_helpers.h')
-rw-r--r--src/core/hle/ipc_helpers.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h
index 38d6cfaff..f8ab55d83 100644
--- a/src/core/hle/ipc_helpers.h
+++ b/src/core/hle/ipc_helpers.h
@@ -15,6 +15,7 @@
15#include "core/hle/kernel/k_resource_limit.h" 15#include "core/hle/kernel/k_resource_limit.h"
16#include "core/hle/kernel/k_session.h" 16#include "core/hle/kernel/k_session.h"
17#include "core/hle/result.h" 17#include "core/hle/result.h"
18#include "core/hle/service/server_manager.h"
18 19
19namespace IPC { 20namespace IPC {
20 21
@@ -145,7 +146,9 @@ public:
145 146
146 template <class T> 147 template <class T>
147 void PushIpcInterface(std::shared_ptr<T> iface) { 148 void PushIpcInterface(std::shared_ptr<T> iface) {
148 if (context->GetManager()->IsDomain()) { 149 auto manager{context->GetManager()};
150
151 if (manager->IsDomain()) {
149 context->AddDomainObject(std::move(iface)); 152 context->AddDomainObject(std::move(iface));
150 } else { 153 } else {
151 kernel.ApplicationProcess()->GetResourceLimit()->Reserve( 154 kernel.ApplicationProcess()->GetResourceLimit()->Reserve(
@@ -153,8 +156,11 @@ public:
153 156
154 auto* session = Kernel::KSession::Create(kernel); 157 auto* session = Kernel::KSession::Create(kernel);
155 session->Initialize(nullptr, iface->GetServiceName()); 158 session->Initialize(nullptr, iface->GetServiceName());
156 iface->RegisterSession(&session->GetServerSession(), 159
157 std::make_shared<Kernel::SessionRequestManager>(kernel)); 160 auto next_manager = std::make_shared<Kernel::SessionRequestManager>(
161 kernel, manager->GetServerManager());
162 next_manager->SetSessionHandler(iface);
163 manager->GetServerManager().RegisterSession(&session->GetServerSession(), next_manager);
158 164
159 context->AddMoveObject(&session->GetClientSession()); 165 context->AddMoveObject(&session->GetClientSession());
160 } 166 }