diff options
Diffstat (limited to 'src/core/hle/ipc_helpers.h')
| -rw-r--r-- | src/core/hle/ipc_helpers.h | 12 |
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 | ||
| 19 | namespace IPC { | 20 | namespace 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 | } |