summaryrefslogtreecommitdiff
path: root/src/core/hle/service/service.cpp
diff options
context:
space:
mode:
authorGravatar Subv2016-12-05 11:02:08 -0500
committerGravatar Subv2016-12-05 11:02:08 -0500
commitdd8887c8cfbb6d3010dde240278a3d4018c5dd85 (patch)
tree9990a463d5daccdab41ae9c90a5c698aed0d4795 /src/core/hle/service/service.cpp
parentDeclare empty ServerSession and ClientSession constructors as default. (diff)
downloadyuzu-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.cpp14
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
45namespace Service { 45namespace Service {
46 46
47std::unordered_map<std::string, std::tuple<Kernel::SharedPtr<Kernel::ClientPort>, std::shared_ptr<Interface>>> g_kernel_named_ports; 47std::unordered_map<std::string, Kernel::SharedPtr<Kernel::ClientPort>> g_kernel_named_ports;
48std::unordered_map<std::string, std::tuple<Kernel::SharedPtr<Kernel::ClientPort>, std::shared_ptr<Interface>>> g_srv_services; 48std::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
104static void AddNamedPort(Interface* interface_) { 104static 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
110void AddService(Interface* interface_) { 111void 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