diff options
author | bunnei <bunneidev@gmail.com> | 2021-06-07 07:52:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-07 07:52:07 +0200 |
commit | 28eb8c83d479403b5da88ae7d3d2a1c6b81a6552 (patch) | |
tree | 43b28bb3b8df05e3f19fe4a151571dedd7171255 /src/core/hle/kernel/k_server_session.cpp | |
parent | Merge pull request #6400 from ameerj/disable-uniform-simplify (diff) | |
parent | hle: kernel: KServerSession: Use ASSERT_MSG where appropriate. (diff) | |
download | yuzu-28eb8c83d479403b5da88ae7d3d2a1c6b81a6552.tar yuzu-28eb8c83d479403b5da88ae7d3d2a1c6b81a6552.tar.gz yuzu-28eb8c83d479403b5da88ae7d3d2a1c6b81a6552.tar.bz2 yuzu-28eb8c83d479403b5da88ae7d3d2a1c6b81a6552.tar.lz yuzu-28eb8c83d479403b5da88ae7d3d2a1c6b81a6552.tar.xz yuzu-28eb8c83d479403b5da88ae7d3d2a1c6b81a6552.tar.zst yuzu-28eb8c83d479403b5da88ae7d3d2a1c6b81a6552.zip |
Diffstat (limited to 'src/core/hle/kernel/k_server_session.cpp')
-rw-r--r-- | src/core/hle/kernel/k_server_session.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/core/hle/kernel/k_server_session.cpp b/src/core/hle/kernel/k_server_session.cpp index dbf03b462..528ca8614 100644 --- a/src/core/hle/kernel/k_server_session.cpp +++ b/src/core/hle/kernel/k_server_session.cpp @@ -13,8 +13,10 @@ #include "core/hle/kernel/hle_ipc.h" #include "core/hle/kernel/k_client_port.h" #include "core/hle/kernel/k_handle_table.h" +#include "core/hle/kernel/k_port.h" #include "core/hle/kernel/k_process.h" #include "core/hle/kernel/k_scheduler.h" +#include "core/hle/kernel/k_server_port.h" #include "core/hle/kernel/k_server_session.h" #include "core/hle/kernel/k_session.h" #include "core/hle/kernel/k_thread.h" @@ -23,18 +25,21 @@ namespace Kernel { -KServerSession::KServerSession(KernelCore& kernel_) - : KSynchronizationObject{kernel_}, manager{std::make_shared<SessionRequestManager>()} {} +KServerSession::KServerSession(KernelCore& kernel_) : KSynchronizationObject{kernel_} {} -KServerSession::~KServerSession() { - kernel.ReleaseServiceThread(service_thread); -} +KServerSession::~KServerSession() {} -void KServerSession::Initialize(KSession* parent_, std::string&& name_) { +void KServerSession::Initialize(KSession* parent_session_, std::string&& name_, + std::shared_ptr<SessionRequestManager> manager_) { // Set member variables. - parent = parent_; + parent = parent_session_; name = std::move(name_); - service_thread = kernel.CreateServiceThread(name); + + if (manager_) { + manager = manager_; + } else { + manager = std::make_shared<SessionRequestManager>(kernel); + } } void KServerSession::Destroy() { @@ -114,9 +119,11 @@ ResultCode KServerSession::QueueSyncRequest(KThread* thread, Core::Memory::Memor context->PopulateFromIncomingCommandBuffer(kernel.CurrentProcess()->GetHandleTable(), cmd_buf); - if (auto strong_ptr = service_thread.lock()) { + if (auto strong_ptr = manager->GetServiceThread(); strong_ptr) { strong_ptr->QueueSyncRequest(*parent, std::move(context)); return ResultSuccess; + } else { + ASSERT_MSG(false, "strong_ptr was nullptr!"); } return ResultSuccess; |