diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2023-03-01 16:38:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-01 16:38:20 +0100 |
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 yuzu-97f7a560f3905a1dd6a4e5a0a308ea752004bf08.tar.gz yuzu-97f7a560f3905a1dd6a4e5a0a308ea752004bf08.tar.bz2 yuzu-97f7a560f3905a1dd6a4e5a0a308ea752004bf08.tar.lz yuzu-97f7a560f3905a1dd6a4e5a0a308ea752004bf08.tar.xz yuzu-97f7a560f3905a1dd6a4e5a0a308ea752004bf08.tar.zst yuzu-97f7a560f3905a1dd6a4e5a0a308ea752004bf08.zip |
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 @@ #include "core/hle/kernel/k_resource_limit.h" #include "core/hle/kernel/k_session.h" #include "core/hle/result.h" +#include "core/hle/service/server_manager.h" namespace IPC { @@ -145,7 +146,9 @@ public: template <class T> void PushIpcInterface(std::shared_ptr<T> iface) { - if (context->GetManager()->IsDomain()) { + auto manager{context->GetManager()}; + + if (manager->IsDomain()) { context->AddDomainObject(std::move(iface)); } else { kernel.ApplicationProcess()->GetResourceLimit()->Reserve( @@ -153,8 +156,11 @@ public: auto* session = Kernel::KSession::Create(kernel); session->Initialize(nullptr, iface->GetServiceName()); - iface->RegisterSession(&session->GetServerSession(), - std::make_shared<Kernel::SessionRequestManager>(kernel)); + + auto next_manager = std::make_shared<Kernel::SessionRequestManager>( + kernel, manager->GetServerManager()); + next_manager->SetSessionHandler(iface); + manager->GetServerManager().RegisterSession(&session->GetServerSession(), next_manager); context->AddMoveObject(&session->GetClientSession()); } |