diff options
| author | 2023-03-01 10:38:20 -0500 | |
|---|---|---|
| committer | 2023-03-01 10:38:20 -0500 | |
| commit | 97f7a560f3905a1dd6a4e5a0a308ea752004bf08 (patch) | |
| tree | e60a69f96d16d051220b66e90906a7abeacf1064 /src/core/hle/ipc_helpers.h | |
| parent | Merge pull request #9879 from zhaobot/tx-update-20230301024940 (diff) | |
| parent | sm:: fix lingering session initialization issues (diff) | |
| download | yuzu-97f7a560f3905a1dd6a4e5a0a308ea752004bf08.tar.gz yuzu-97f7a560f3905a1dd6a4e5a0a308ea752004bf08.tar.xz yuzu-97f7a560f3905a1dd6a4e5a0a308ea752004bf08.zip | |
Merge pull request #9832 from liamwhite/hle-mp
service: HLE multiprocess
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 | } |