diff options
Diffstat (limited to 'src/core/hle/service/service.cpp')
| -rw-r--r-- | src/core/hle/service/service.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 3a821871f..1b64ee77d 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | #include "core/hle/service/ptm/ptm.h" | 38 | #include "core/hle/service/ptm/ptm.h" |
| 39 | #include "core/hle/service/qtm/qtm.h" | 39 | #include "core/hle/service/qtm/qtm.h" |
| 40 | #include "core/hle/service/service.h" | 40 | #include "core/hle/service/service.h" |
| 41 | #include "core/hle/service/sm/sm.h" | ||
| 41 | #include "core/hle/service/sm/srv.h" | 42 | #include "core/hle/service/sm/srv.h" |
| 42 | #include "core/hle/service/soc_u.h" | 43 | #include "core/hle/service/soc_u.h" |
| 43 | #include "core/hle/service/ssl_c.h" | 44 | #include "core/hle/service/ssl_c.h" |
| @@ -46,7 +47,6 @@ | |||
| 46 | namespace Service { | 47 | namespace Service { |
| 47 | 48 | ||
| 48 | std::unordered_map<std::string, Kernel::SharedPtr<Kernel::ClientPort>> g_kernel_named_ports; | 49 | std::unordered_map<std::string, Kernel::SharedPtr<Kernel::ClientPort>> g_kernel_named_ports; |
| 49 | std::unordered_map<std::string, Kernel::SharedPtr<Kernel::ClientPort>> g_srv_services; | ||
| 50 | 50 | ||
| 51 | /** | 51 | /** |
| 52 | * Creates a function string for logging, complete with the name (or header code, depending | 52 | * Creates a function string for logging, complete with the name (or header code, depending |
| @@ -115,17 +115,16 @@ static void AddNamedPort(Interface* interface_) { | |||
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | void AddService(Interface* interface_) { | 117 | void AddService(Interface* interface_) { |
| 118 | Kernel::SharedPtr<Kernel::ServerPort> server_port; | 118 | auto server_port = |
| 119 | Kernel::SharedPtr<Kernel::ClientPort> client_port; | 119 | SM::g_service_manager |
| 120 | std::tie(server_port, client_port) = | 120 | ->RegisterService(interface_->GetPortName(), interface_->GetMaxSessions()) |
| 121 | Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName()); | 121 | .MoveFrom(); |
| 122 | |||
| 123 | server_port->SetHleHandler(std::shared_ptr<Interface>(interface_)); | 122 | server_port->SetHleHandler(std::shared_ptr<Interface>(interface_)); |
| 124 | g_srv_services.emplace(interface_->GetPortName(), std::move(client_port)); | ||
| 125 | } | 123 | } |
| 126 | 124 | ||
| 127 | /// Initialize ServiceManager | 125 | /// Initialize ServiceManager |
| 128 | void Init() { | 126 | void Init() { |
| 127 | SM::g_service_manager = std::make_unique<SM::ServiceManager>(); | ||
| 129 | AddNamedPort(new SM::SRV); | 128 | AddNamedPort(new SM::SRV); |
| 130 | AddNamedPort(new ERR::ERR_F); | 129 | AddNamedPort(new ERR::ERR_F); |
| 131 | 130 | ||
| @@ -187,7 +186,7 @@ void Shutdown() { | |||
| 187 | AC::Shutdown(); | 186 | AC::Shutdown(); |
| 188 | FS::ArchiveShutdown(); | 187 | FS::ArchiveShutdown(); |
| 189 | 188 | ||
| 190 | g_srv_services.clear(); | 189 | SM::g_service_manager = nullptr; |
| 191 | g_kernel_named_ports.clear(); | 190 | g_kernel_named_ports.clear(); |
| 192 | LOG_DEBUG(Service, "shutdown OK"); | 191 | LOG_DEBUG(Service, "shutdown OK"); |
| 193 | } | 192 | } |