diff options
| author | liamwhite <liamwhite@users.noreply.github.com> | 2022-10-20 18:07:30 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-20 18:07:30 -0400 |
| commit | a6628e8dba0432031a5bc470e5716c831128a357 (patch) | |
| tree | 533eef88596325c5f14b3caf5350cb9a09265afa /src/core/hle/kernel/k_client_session.cpp | |
| parent | 9e168370880ad7b0580e7b5dd313c1e52a64707e (diff) | |
| parent | fca195b4fb1255c20579fd25d8565f0ae4759b6e (diff) | |
Merge pull request #9078 from liamwhite/session-request
kernel: Session request cleanup
Diffstat (limited to 'src/core/hle/kernel/k_client_session.cpp')
| -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 |
