[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>
This commit is contained in:
lizzie 2026-06-23 06:31:25 +02:00 committed by crueter
parent f8facda35f
commit 3aa0d46259
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
307 changed files with 4419 additions and 4477 deletions

View file

@ -70,7 +70,7 @@ void Conductor::UnlinkVsyncEvent(u64 display_id, Event* event) {
void Conductor::ProcessVsync() {
for (auto& [display_id, manager] : m_vsync_managers) {
m_container.ComposeOnDisplay(&m_swap_interval, &m_compose_speed_scale, display_id);
manager.SignalVsync();
manager.SignalVsync(m_system.Kernel());
}
}

View file

@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@ -9,18 +12,10 @@ namespace Service::VI {
VsyncManager::VsyncManager() = default;
VsyncManager::~VsyncManager() = default;
void VsyncManager::SignalVsync() {
void VsyncManager::SignalVsync(Kernel::KernelCore& kernel) {
for (auto* event : m_vsync_events) {
event->Signal();
event->Signal(kernel);
}
}
void VsyncManager::LinkVsyncEvent(Event* event) {
m_vsync_events.insert(event);
}
void VsyncManager::UnlinkVsyncEvent(Event* event) {
m_vsync_events.erase(event);
}
} // namespace Service::VI

View file

@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@ -5,6 +8,10 @@
#include <set>
namespace Kernel {
class KernelCore;
}
namespace Service {
class Event;
}
@ -18,9 +25,13 @@ public:
explicit VsyncManager();
~VsyncManager();
void SignalVsync();
void LinkVsyncEvent(Event* event);
void UnlinkVsyncEvent(Event* event);
void SignalVsync(Kernel::KernelCore& kernel);
void LinkVsyncEvent(Event* event) {
m_vsync_events.insert(event);
}
void UnlinkVsyncEvent(Event* event) {
m_vsync_events.erase(event);
}
private:
std::set<Event*> m_vsync_events;