summaryrefslogtreecommitdiff
path: root/src/core/hle/service/service.cpp
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner2017-06-06 08:04:02 -0700
committerGravatar GitHub2017-06-06 08:04:02 -0700
commitfc1bd06192a10b52425b76880531b520dd68e86d (patch)
treebe459930c35e50f698ef7747730092116eea6a74 /src/core/hle/service/service.cpp
parentMerge pull request #2752 from yuriks/move-session-request-handler (diff)
parentKernel: Add a dedicated SetHleHandler method to ServerPort/ServerSession (diff)
downloadyuzu-fc1bd06192a10b52425b76880531b520dd68e86d.tar.gz
yuzu-fc1bd06192a10b52425b76880531b520dd68e86d.tar.xz
yuzu-fc1bd06192a10b52425b76880531b520dd68e86d.zip
Merge pull request #2753 from yuriks/set-hle-handler
Add SetHleHandler to ServerPort/ServerSession
Diffstat (limited to 'src/core/hle/service/service.cpp')
-rw-r--r--src/core/hle/service/service.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index bb22e25be..8f7c97d54 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -105,18 +105,22 @@ void Interface::Register(const FunctionInfo* functions, size_t n) {
105// Module interface 105// Module interface
106 106
107static void AddNamedPort(Interface* interface_) { 107static void AddNamedPort(Interface* interface_) {
108 auto ports = 108 Kernel::SharedPtr<Kernel::ServerPort> server_port;
109 Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName(), 109 Kernel::SharedPtr<Kernel::ClientPort> client_port;
110 std::shared_ptr<Interface>(interface_)); 110 std::tie(server_port, client_port) =
111 auto client_port = std::get<Kernel::SharedPtr<Kernel::ClientPort>>(ports); 111 Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName());
112
113 server_port->SetHleHandler(std::shared_ptr<Interface>(interface_));
112 g_kernel_named_ports.emplace(interface_->GetPortName(), std::move(client_port)); 114 g_kernel_named_ports.emplace(interface_->GetPortName(), std::move(client_port));
113} 115}
114 116
115void AddService(Interface* interface_) { 117void AddService(Interface* interface_) {
116 auto ports = 118 Kernel::SharedPtr<Kernel::ServerPort> server_port;
117 Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName(), 119 Kernel::SharedPtr<Kernel::ClientPort> client_port;
118 std::shared_ptr<Interface>(interface_)); 120 std::tie(server_port, client_port) =
119 auto client_port = std::get<Kernel::SharedPtr<Kernel::ClientPort>>(ports); 121 Kernel::ServerPort::CreatePortPair(interface_->GetMaxSessions(), interface_->GetPortName());
122
123 server_port->SetHleHandler(std::shared_ptr<Interface>(interface_));
120 g_srv_services.emplace(interface_->GetPortName(), std::move(client_port)); 124 g_srv_services.emplace(interface_->GetPortName(), std::move(client_port));
121} 125}
122 126