summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/glue
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/service/glue')
-rw-r--r--src/core/hle/service/glue/glue.cpp23
-rw-r--r--src/core/hle/service/glue/glue.h3
2 files changed, 15 insertions, 11 deletions
diff --git a/src/core/hle/service/glue/glue.cpp b/src/core/hle/service/glue/glue.cpp
index 717f2562b..993c3d21d 100644
--- a/src/core/hle/service/glue/glue.cpp
+++ b/src/core/hle/service/glue/glue.cpp
@@ -8,25 +8,30 @@
#include "core/hle/service/glue/ectx.h"
#include "core/hle/service/glue/glue.h"
#include "core/hle/service/glue/notif.h"
+#include "core/hle/service/server_manager.h"
namespace Service::Glue {
-void InstallInterfaces(Core::System& system) {
+void LoopProcess(Core::System& system) {
+ auto server_manager = std::make_unique<ServerManager>(system);
+
// ARP
- std::make_shared<ARP_R>(system, system.GetARPManager())
- ->InstallAsService(system.ServiceManager());
- std::make_shared<ARP_W>(system, system.GetARPManager())
- ->InstallAsService(system.ServiceManager());
+ server_manager->RegisterNamedService("arp:r",
+ std::make_shared<ARP_R>(system, system.GetARPManager()));
+ server_manager->RegisterNamedService("arp:w",
+ std::make_shared<ARP_W>(system, system.GetARPManager()));
// BackGround Task Controller
- std::make_shared<BGTC_T>(system)->InstallAsService(system.ServiceManager());
- std::make_shared<BGTC_SC>(system)->InstallAsService(system.ServiceManager());
+ server_manager->RegisterNamedService("bgtc:t", std::make_shared<BGTC_T>(system));
+ server_manager->RegisterNamedService("bgtc:sc", std::make_shared<BGTC_SC>(system));
// Error Context
- std::make_shared<ECTX_AW>(system)->InstallAsService(system.ServiceManager());
+ server_manager->RegisterNamedService("ectx:aw", std::make_shared<ECTX_AW>(system));
// Notification Services for application
- std::make_shared<NOTIF_A>(system)->InstallAsService(system.ServiceManager());
+ server_manager->RegisterNamedService("notif:a", std::make_shared<NOTIF_A>(system));
+
+ ServerManager::RunServer(std::move(server_manager));
}
} // namespace Service::Glue
diff --git a/src/core/hle/service/glue/glue.h b/src/core/hle/service/glue/glue.h
index ae7c6d235..2a906f5ad 100644
--- a/src/core/hle/service/glue/glue.h
+++ b/src/core/hle/service/glue/glue.h
@@ -9,7 +9,6 @@ class System;
namespace Service::Glue {
-/// Registers all Glue services with the specified service manager.
-void InstallInterfaces(Core::System& system);
+void LoopProcess(Core::System& system);
} // namespace Service::Glue