diff --git a/src/core/hle/service/nvdrv/nvdrv.cpp b/src/core/hle/service/nvdrv/nvdrv.cpp index cc006bd975..b252a2efa5 100644 --- a/src/core/hle/service/nvdrv/nvdrv.cpp +++ b/src/core/hle/service/nvdrv/nvdrv.cpp @@ -105,7 +105,12 @@ void LoopProcess(Core::System& system) { auto server_manager = std::make_unique(system); auto module = std::make_shared(system); server_manager->RegisterNamedService("nvdrv", std::make_shared(system, module, "nvdrv")); - server_manager->RegisterNamedService("nvdrv:a", std::make_shared(system, module, "nvdrv:a")); + + const auto NvdrvInterfaceFactoryForApplets = [&, module] { + return std::make_shared(system, module, "nvdrv:a"); + }; + + server_manager->RegisterNamedService("nvdrv:a", NvdrvInterfaceFactoryForApplets); server_manager->RegisterNamedService("nvdrv:s", std::make_shared(system, module, "nvdrv:s")); server_manager->RegisterNamedService("nvdrv:t", std::make_shared(system, module, "nvdrv:t")); server_manager->RegisterNamedService("nvmemp", std::make_shared(system)); diff --git a/src/core/hle/service/ro/ro.cpp b/src/core/hle/service/ro/ro.cpp index f0561b19cc..922fc10440 100644 --- a/src/core/hle/service/ro/ro.cpp +++ b/src/core/hle/service/ro/ro.cpp @@ -588,7 +588,12 @@ void LoopProcess(Core::System& system) { auto server_manager = std::make_unique(system); auto ro = std::make_shared(); - server_manager->RegisterNamedService("ldr:ro", std::make_shared(system, "ldr:ro", ro, NrrKind::User)); + + const auto RoInterfaceFactoryForUser = [&, ro] { + return std::make_shared(system, "ldr:ro", ro, NrrKind::User); + }; + + server_manager->RegisterNamedService("ldr:ro", std::move(RoInterfaceFactoryForUser)); server_manager->RegisterNamedService("ro:1", std::make_shared(system, "ro:1", ro, NrrKind::JitPlugin)); server_manager->RegisterNamedService("ro:dmnt", std::make_shared(system)); ServerManager::RunServer(std::move(server_manager));