diff options
| author | 2016-12-05 11:02:08 -0500 | |
|---|---|---|
| committer | 2016-12-05 11:02:08 -0500 | |
| commit | dd8887c8cfbb6d3010dde240278a3d4018c5dd85 (patch) | |
| tree | 9990a463d5daccdab41ae9c90a5c698aed0d4795 /src/core/hle/service/service.cpp | |
| parent | Declare empty ServerSession and ClientSession constructors as default. (diff) | |
| download | yuzu-dd8887c8cfbb6d3010dde240278a3d4018c5dd85.tar.gz yuzu-dd8887c8cfbb6d3010dde240278a3d4018c5dd85.tar.xz yuzu-dd8887c8cfbb6d3010dde240278a3d4018c5dd85.zip | |
KServerPorts now have an HLE handler "template", which is inherited by all ServerSessions created from it.
Diffstat (limited to 'src/core/hle/service/service.cpp')
| -rw-r--r-- | src/core/hle/service/service.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index c90802455..3462af8ce 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp | |||
| @@ -44,8 +44,8 @@ | |||
| 44 | 44 | ||
| 45 | namespace Service { | 45 | namespace Service { |
| 46 | 46 | ||
| 47 | std::unordered_map<std::string, std::tuple<Kernel::SharedPtr<Kernel::ClientPort>, std::shared_ptr<Interface>>> g_kernel_named_ports; | 47 | std::unordered_map<std::string, Kernel::SharedPtr<Kernel::ClientPort>> g_kernel_named_ports; |
| 48 | std::unordered_map<std::string, std::tuple<Kernel::SharedPtr<Kernel::ClientPort>, std::shared_ptr<Interface>>> g_srv_services; | 48 | std::unordered_map<std::string, Kernel::SharedPtr<Kernel::ClientPort>> g_srv_services; |
| 49 | 49 | ||
| 50 | /** | 50 | /** |
| 51 | * Creates a function string for logging, complete with the name (or header code, depending | 51 | * Creates a function string for logging, complete with the name (or header code, depending |
| @@ -102,15 +102,17 @@ void Interface::Register(const FunctionInfo* functions, size_t n) { | |||
| 102 | // Module interface | 102 | // Module interface |
| 103 | 103 | ||
| 104 | static void AddNamedPort(Interface* interface_) { | 104 | static void AddNamedPort(Interface* interface_) { |
| 105 | auto ports = Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName()); | 105 | auto ports = Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName(), |
| 106 | std::shared_ptr<Interface>(interface_)); | ||
| 106 | auto client_port = std::get<Kernel::SharedPtr<Kernel::ClientPort>>(ports); | 107 | auto client_port = std::get<Kernel::SharedPtr<Kernel::ClientPort>>(ports); |
| 107 | g_kernel_named_ports.emplace(interface_->GetPortName(), std::make_tuple(client_port, std::shared_ptr<Interface>(interface_))); | 108 | g_kernel_named_ports.emplace(interface_->GetPortName(), client_port); |
| 108 | } | 109 | } |
| 109 | 110 | ||
| 110 | void AddService(Interface* interface_) { | 111 | void AddService(Interface* interface_) { |
| 111 | auto ports = Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName()); | 112 | auto ports = Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName(), |
| 113 | std::shared_ptr<Interface>(interface_)); | ||
| 112 | auto client_port = std::get<Kernel::SharedPtr<Kernel::ClientPort>>(ports); | 114 | auto client_port = std::get<Kernel::SharedPtr<Kernel::ClientPort>>(ports); |
| 113 | g_srv_services.emplace(interface_->GetPortName(), std::make_tuple(client_port, std::shared_ptr<Interface>(interface_))); | 115 | g_srv_services.emplace(interface_->GetPortName(), client_port); |
| 114 | } | 116 | } |
| 115 | 117 | ||
| 116 | /// Initialize ServiceManager | 118 | /// Initialize ServiceManager |