summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/k_server_session.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-06-07 07:52:07 +0200
committerGitHub <noreply@github.com>2021-06-07 07:52:07 +0200
commit28eb8c83d479403b5da88ae7d3d2a1c6b81a6552 (patch)
tree43b28bb3b8df05e3f19fe4a151571dedd7171255 /src/core/hle/kernel/k_server_session.cpp
parentMerge pull request #6400 from ameerj/disable-uniform-simplify (diff)
parenthle: kernel: KServerSession: Use ASSERT_MSG where appropriate. (diff)
downloadyuzu-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 '')
-rw-r--r--src/core/hle/kernel/k_server_session.cpp25
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;