From 12880e9170d85f80d99f80fb16b38008ed0bb55a Mon Sep 17 00:00:00 2001 From: GPUCode Date: Fri, 5 Jan 2024 23:50:10 +0200 Subject: [PATCH] core: Config plg_ldr after its creation * Also use service manager to retrieve the service --- src/core/core.cpp | 6 ++++++ src/core/hle/service/plgldr/plgldr.cpp | 9 +-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/core/core.cpp b/src/core/core.cpp index ad6f0ae56..e8c0c4178 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -449,6 +449,12 @@ System::ResultStatus System::Init(Frontend::EmuWindow& emu_window, gpu->SetInterruptHandler( [gsp](Service::GSP::InterruptId interrupt_id) { gsp->SignalInterrupt(interrupt_id); }); + auto plg_ldr = Service::PLGLDR::GetService(*this); + if (plg_ldr) { + plg_ldr->SetEnabled(Settings::values.plugin_loader_enabled.GetValue()); + plg_ldr->SetAllowGameChangeState(Settings::values.allow_plugin_loader.GetValue()); + } + LOG_DEBUG(Core, "Initialized OK"); is_powered_on = true; diff --git a/src/core/hle/service/plgldr/plgldr.cpp b/src/core/hle/service/plgldr/plgldr.cpp index 7fb929cc0..5b2e32297 100644 --- a/src/core/hle/service/plgldr/plgldr.cpp +++ b/src/core/hle/service/plgldr/plgldr.cpp @@ -26,12 +26,10 @@ #include "common/settings.h" #include "core/core.h" #include "core/file_sys/plugin_3gx.h" -#include "core/hle/ipc.h" #include "core/hle/ipc_helpers.h" #include "core/hle/kernel/event.h" #include "core/hle/kernel/handle_table.h" #include "core/hle/kernel/kernel.h" -#include "core/hle/kernel/shared_memory.h" #include "core/hle/service/plgldr/plgldr.h" #include "core/loader/loader.h" @@ -290,12 +288,7 @@ void PLG_LDR::GetPluginPath(Kernel::HLERequestContext& ctx) { } std::shared_ptr GetService(Core::System& system) { - if (!system.KernelRunning()) - return nullptr; - auto it = system.Kernel().named_ports.find("plg:ldr"); - if (it != system.Kernel().named_ports.end()) - return std::static_pointer_cast(it->second->GetServerPort()->hle_handler); - return nullptr; + return system.ServiceManager().GetService("plg:ldr"); } void InstallInterfaces(Core::System& system) {