summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/k_server_session.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-06-05 04:26:48 +0200
committerbunnei <bunneidev@gmail.com>2021-06-05 04:26:48 +0200
commit27ce97fd42d758350c5100c4bbcb78de0a6d48b5 (patch)
tree7ebe2d29e0bbac3cd33dd21f8f154632aedfdea9 /src/core/hle/kernel/k_server_session.cpp
parentMerge pull request #6392 from german77/controller-widget (diff)
downloadyuzu-27ce97fd42d758350c5100c4bbcb78de0a6d48b5.tar
yuzu-27ce97fd42d758350c5100c4bbcb78de0a6d48b5.tar.gz
yuzu-27ce97fd42d758350c5100c4bbcb78de0a6d48b5.tar.bz2
yuzu-27ce97fd42d758350c5100c4bbcb78de0a6d48b5.tar.lz
yuzu-27ce97fd42d758350c5100c4bbcb78de0a6d48b5.tar.xz
yuzu-27ce97fd42d758350c5100c4bbcb78de0a6d48b5.tar.zst
yuzu-27ce97fd42d758350c5100c4bbcb78de0a6d48b5.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/kernel/k_server_session.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/core/hle/kernel/k_server_session.cpp b/src/core/hle/kernel/k_server_session.cpp
index dbf03b462..e66a9198a 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_, std::string&& name_,
+ std::shared_ptr<SessionRequestManager> manager_) {
// Set member variables.
parent = parent_;
name = std::move(name_);
- service_thread = kernel.CreateServiceThread(name);
+
+ if (manager_) {
+ manager = manager_;
+ } else {
+ manager = std::make_shared<SessionRequestManager>(kernel);
+ }
}
void KServerSession::Destroy() {
@@ -114,7 +119,7 @@ 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().lock()) {
strong_ptr->QueueSyncRequest(*parent, std::move(context));
return ResultSuccess;
}