diff options
| author | 2017-06-06 08:04:02 -0700 | |
|---|---|---|
| committer | 2017-06-06 08:04:02 -0700 | |
| commit | fc1bd06192a10b52425b76880531b520dd68e86d (patch) | |
| tree | be459930c35e50f698ef7747730092116eea6a74 /src/core/hle/service/service.cpp | |
| parent | Merge pull request #2752 from yuriks/move-session-request-handler (diff) | |
| parent | Kernel: Add a dedicated SetHleHandler method to ServerPort/ServerSession (diff) | |
| download | yuzu-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.cpp | 20 |
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 | ||
| 107 | static void AddNamedPort(Interface* interface_) { | 107 | static 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 | ||
| 115 | void AddService(Interface* interface_) { | 117 | void 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 | ||