aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/svc/svc_session.cpp
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-06-23 06:31:25 +0200
committercrueter <crueter@eden-emu.dev>2026-06-23 06:31:25 +0200
commit3aa0d462598beb2021308eee1d757d74fe33b312 (patch)
treeed425c3845ba8fa61184d97b0588cb049b518bd7 /src/core/hle/kernel/svc/svc_session.cpp
parentf8facda35fe7f17143f84bbfbdacc4cc48678946 (diff)
[video_core, hle] remove redundant parent references in system structs (#3908)
reworked a bit to remove references of parent objects and instead pass as arguments to methods to prevent useless reloads Signed-off-by: lizzie <lizzie@eden-emu.dev> Co-authored-by: maufeat <sahyno1996@gmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3908 Reviewed-by: Maufeat <sahyno1996@gmail.com> Reviewed-by: crueter <crueter@eden-emu.dev>
Diffstat (limited to 'src/core/hle/kernel/svc/svc_session.cpp')
-rw-r--r--src/core/hle/kernel/svc/svc_session.cpp33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/core/hle/kernel/svc/svc_session.cpp b/src/core/hle/kernel/svc/svc_session.cpp
index b034d21d15..4d04f0c5a3 100644
--- a/src/core/hle/kernel/svc/svc_session.cpp
+++ b/src/core/hle/kernel/svc/svc_session.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -23,7 +26,7 @@ Result CreateSession(Core::System& system, Handle* out_server, Handle* out_clien
// Reserve a new session from the process resource limit.
// TODO: Dynamic resource limits
- KScopedResourceReservation session_reservation(std::addressof(process),
+ KScopedResourceReservation session_reservation(system.Kernel(), std::addressof(process),
LimitableResource::SessionCountMax);
if (session_reservation.Succeeded()) {
session = T::Create(system.Kernel());
@@ -62,7 +65,7 @@ Result CreateSession(Core::System& system, Handle* out_server, Handle* out_clien
R_UNLESS(session != nullptr, ResultOutOfResource);
// Initialize the session.
- session->Initialize(nullptr, name);
+ session->Initialize(system.Kernel(), nullptr, name);
// Commit the session reservation.
session_reservation.Commit();
@@ -70,23 +73,23 @@ Result CreateSession(Core::System& system, Handle* out_server, Handle* out_clien
// Ensure that we clean up the session (and its only references are handle table) on function
// end.
SCOPE_EXIT {
- session->GetClientSession().Close();
- session->GetServerSession().Close();
+ session->GetClientSession().Close(system.Kernel());
+ session->GetServerSession().Close(system.Kernel());
};
// Register the session.
T::Register(system.Kernel(), session);
// Add the server session to the handle table.
- R_TRY(handle_table.Add(out_server, std::addressof(session->GetServerSession())));
+ R_TRY(handle_table.Add(system.Kernel(), out_server, std::addressof(session->GetServerSession())));
// Ensure that we maintain a clean handle state on exit.
ON_RESULT_FAILURE {
- handle_table.Remove(*out_server);
+ handle_table.Remove(system.Kernel(), *out_server);
};
// Add the client session to the handle table.
- R_RETURN(handle_table.Add(out_client, std::addressof(session->GetClientSession())));
+ R_RETURN(handle_table.Add(system.Kernel(), out_client, std::addressof(session->GetClientSession())));
}
} // namespace
@@ -105,29 +108,29 @@ Result AcceptSession(Core::System& system, Handle* out, Handle port_handle) {
auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable();
// Get the server port.
- KScopedAutoObject port = handle_table.GetObject<KServerPort>(port_handle);
+ KScopedAutoObject port = handle_table.GetObject<KServerPort>(system.Kernel(), port_handle);
R_UNLESS(port.IsNotNull(), ResultInvalidHandle);
// Reserve an entry for the new session.
- R_TRY(handle_table.Reserve(out));
+ R_TRY(handle_table.Reserve(system.Kernel(), out));
ON_RESULT_FAILURE {
- handle_table.Unreserve(*out);
+ handle_table.Unreserve(system.Kernel(), *out);
};
// Accept the session.
KAutoObject* session;
- if (port->IsLight()) {
- session = port->AcceptLightSession();
+ if (port->IsLight(system.Kernel())) {
+ session = port->AcceptLightSession(system.Kernel());
} else {
- session = port->AcceptSession();
+ session = port->AcceptSession(system.Kernel());
}
// Ensure we accepted successfully.
R_UNLESS(session != nullptr, ResultNotFound);
// Register the session.
- handle_table.Register(*out, session);
- session->Close();
+ handle_table.Register(system.Kernel(), *out, session);
+ session->Close(system.Kernel());
R_SUCCEED();
}