summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/server_manager.cpp
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2023-12-18 02:46:41 +0100
committerLiam <byteslice@airmail.cc>2023-12-23 03:52:49 +0100
commit31bf57a310f3b3417e96ec9e1cee6c1c817882d9 (patch)
treec5101e70584301cfc452641544cd31d4d4c6d105 /src/core/hle/service/server_manager.cpp
parentk_server_session: remove scratch buffer usage in favor of direct copy (diff)
downloadyuzu-31bf57a310f3b3417e96ec9e1cee6c1c817882d9.tar
yuzu-31bf57a310f3b3417e96ec9e1cee6c1c817882d9.tar.gz
yuzu-31bf57a310f3b3417e96ec9e1cee6c1c817882d9.tar.bz2
yuzu-31bf57a310f3b3417e96ec9e1cee6c1c817882d9.tar.lz
yuzu-31bf57a310f3b3417e96ec9e1cee6c1c817882d9.tar.xz
yuzu-31bf57a310f3b3417e96ec9e1cee6c1c817882d9.tar.zst
yuzu-31bf57a310f3b3417e96ec9e1cee6c1c817882d9.zip
Diffstat (limited to 'src/core/hle/service/server_manager.cpp')
-rw-r--r--src/core/hle/service/server_manager.cpp19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/core/hle/service/server_manager.cpp b/src/core/hle/service/server_manager.cpp
index ec599dac2..15edb23e0 100644
--- a/src/core/hle/service/server_manager.cpp
+++ b/src/core/hle/service/server_manager.cpp
@@ -47,7 +47,7 @@ ServerManager::~ServerManager() {
m_stopped.Wait();
m_threads.clear();
- // Clean up ports.
+ // Clean up server ports.
for (const auto& [port, handler] : m_ports) {
port->Close();
}
@@ -97,22 +97,15 @@ Result ServerManager::RegisterNamedService(const std::string& service_name,
u32 max_sessions) {
ASSERT(m_sessions.size() + m_ports.size() < MaximumWaitObjects);
- // Add the new server to sm:.
- ASSERT(R_SUCCEEDED(
- m_system.ServiceManager().RegisterService(service_name, max_sessions, handler_factory)));
-
- // Get the registered port.
- Kernel::KPort* port{};
- ASSERT(
- R_SUCCEEDED(m_system.ServiceManager().GetServicePort(std::addressof(port), service_name)));
-
- // Open a new reference to the server port.
- port->GetServerPort().Open();
+ // Add the new server to sm: and get the moved server port.
+ Kernel::KServerPort* server_port{};
+ R_ASSERT(m_system.ServiceManager().RegisterService(std::addressof(server_port), service_name,
+ max_sessions, handler_factory));
// Begin tracking the server port.
{
std::scoped_lock ll{m_list_mutex};
- m_ports.emplace(std::addressof(port->GetServerPort()), std::move(handler_factory));
+ m_ports.emplace(server_port, std::move(handler_factory));
}
// Signal the wakeup event.