aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/k_object_name.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/k_object_name.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/k_object_name.cpp')
-rw-r--r--src/core/hle/kernel/k_object_name.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/core/hle/kernel/k_object_name.cpp b/src/core/hle/kernel/k_object_name.cpp
index df3a1c4c56..da0b04b450 100644
--- a/src/core/hle/kernel/k_object_name.cpp
+++ b/src/core/hle/kernel/k_object_name.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
@@ -8,14 +11,14 @@ namespace Kernel {
KObjectNameGlobalData::KObjectNameGlobalData(KernelCore& kernel) : m_object_list_lock{kernel} {}
KObjectNameGlobalData::~KObjectNameGlobalData() = default;
-void KObjectName::Initialize(KAutoObject* obj, const char* name) {
+void KObjectName::Initialize(KernelCore& kernel, KAutoObject* obj, const char* name) {
// Set member variables.
m_object = obj;
std::strncpy(m_name.data(), name, sizeof(m_name) - 1);
m_name[sizeof(m_name) - 1] = '\x00';
// Open a reference to the object we hold.
- m_object->Open();
+ m_object->Open(kernel);
}
bool KObjectName::MatchesName(const char* name) const {
@@ -28,7 +31,7 @@ Result KObjectName::NewFromName(KernelCore& kernel, KAutoObject* obj, const char
R_UNLESS(new_name != nullptr, ResultOutOfResource);
// Initialize the new name.
- new_name->Initialize(obj, name);
+ new_name->Initialize(kernel, obj, name);
// Check if there's an existing name.
{
@@ -47,7 +50,7 @@ Result KObjectName::NewFromName(KernelCore& kernel, KAutoObject* obj, const char
}
// The object already exists, which is an error condition. Perform cleanup.
- obj->Close();
+ obj->Close(kernel);
KObjectName::Free(kernel, new_name);
R_THROW(ResultInvalidState);
}
@@ -63,7 +66,7 @@ Result KObjectName::Delete(KernelCore& kernel, KAutoObject* obj, const char* com
for (auto& name : gd.GetObjectList()) {
if (name.MatchesName(compare_name) && obj == name.GetObject()) {
// We found a match, clean up its resources.
- obj->Close();
+ obj->Close(kernel);
gd.GetObjectList().erase(gd.GetObjectList().iterator_to(name));
KObjectName::Free(kernel, std::addressof(name));
R_SUCCEED();
@@ -89,14 +92,12 @@ KScopedAutoObject<KAutoObject> KObjectName::FindImpl(KernelCore& kernel, const c
KObjectNameGlobalData& gd{kernel.ObjectNameGlobalData()};
// Try to find a matching object in the global list.
- for (const auto& name : gd.GetObjectList()) {
- if (name.MatchesName(compare_name)) {
- return name.GetObject();
- }
- }
+ for (const auto& name : gd.GetObjectList())
+ if (name.MatchesName(compare_name))
+ return {kernel, name.GetObject()};
// There's no matching entry in the list.
- return nullptr;
+ return {kernel, nullptr};
}
} // namespace Kernel