diff options
author | Liam <byteslice@airmail.cc> | 2022-10-15 03:24:25 +0200 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2022-10-19 22:31:12 +0200 |
commit | 3efb8eb2dc8bf14eecb7e731a61712e0290d9f5d (patch) | |
tree | 712f72486357c7f4a0f98f646904542d06b0d878 /src/core/hle/kernel/k_client_session.cpp | |
parent | Merge pull request #9082 from Morph1984/future (diff) | |
download | yuzu-3efb8eb2dc8bf14eecb7e731a61712e0290d9f5d.tar yuzu-3efb8eb2dc8bf14eecb7e731a61712e0290d9f5d.tar.gz yuzu-3efb8eb2dc8bf14eecb7e731a61712e0290d9f5d.tar.bz2 yuzu-3efb8eb2dc8bf14eecb7e731a61712e0290d9f5d.tar.lz yuzu-3efb8eb2dc8bf14eecb7e731a61712e0290d9f5d.tar.xz yuzu-3efb8eb2dc8bf14eecb7e731a61712e0290d9f5d.tar.zst yuzu-3efb8eb2dc8bf14eecb7e731a61712e0290d9f5d.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/kernel/k_client_session.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/core/hle/kernel/k_client_session.cpp b/src/core/hle/kernel/k_client_session.cpp index 8892c5b7c..b4197a8d5 100644 --- a/src/core/hle/kernel/k_client_session.cpp +++ b/src/core/hle/kernel/k_client_session.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include "common/scope_exit.h" #include "core/hle/kernel/hle_ipc.h" #include "core/hle/kernel/k_client_session.h" #include "core/hle/kernel/k_server_session.h" @@ -10,6 +11,8 @@ namespace Kernel { +static constexpr u32 MessageBufferSize = 0x100; + KClientSession::KClientSession(KernelCore& kernel_) : KAutoObjectWithSlabHeapAndContainer{kernel_} {} KClientSession::~KClientSession() = default; @@ -22,8 +25,16 @@ void KClientSession::Destroy() { void KClientSession::OnServerClosed() {} Result KClientSession::SendSyncRequest() { - // Signal the server session that new data is available - return parent->GetServerSession().OnRequest(); + // Create a session request. + KSessionRequest* request = KSessionRequest::Create(kernel); + R_UNLESS(request != nullptr, ResultOutOfResource); + SCOPE_EXIT({ request->Close(); }); + + // Initialize the request. + request->Initialize(nullptr, GetCurrentThread(kernel).GetTLSAddress(), MessageBufferSize); + + // Send the request. + return parent->GetServerSession().OnRequest(request); } } // namespace Kernel |