diff options
Diffstat (limited to 'src/core/hle/kernel/k_auto_object_container.cpp')
-rw-r--r-- | src/core/hle/kernel/k_auto_object_container.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/core/hle/kernel/k_auto_object_container.cpp b/src/core/hle/kernel/k_auto_object_container.cpp new file mode 100644 index 000000000..9ba8a54c7 --- /dev/null +++ b/src/core/hle/kernel/k_auto_object_container.cpp @@ -0,0 +1,35 @@ +// Copyright 2021 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "core/hle/kernel/k_auto_object_container.h" + +namespace Kernel { + +void KAutoObjectWithListContainer::Register(KAutoObjectWithList* obj) { + KScopedLightLock lk(m_lock); + + m_object_list.insert(*obj); +} + +void KAutoObjectWithListContainer::Unregister(KAutoObjectWithList* obj) { + KScopedLightLock lk(m_lock); + + m_object_list.erase(m_object_list.iterator_to(*obj)); +} + +size_t KAutoObjectWithListContainer::GetOwnedCount(Process* owner) { + KScopedLightLock lk(m_lock); + + size_t count = 0; + + for (auto& obj : m_object_list) { + if (obj.GetOwner() == owner) { + count++; + } + } + + return count; +} + +} // namespace Kernel |