diff options
author | Fernando S <fsahmkow27@gmail.com> | 2023-12-24 16:23:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-24 16:23:14 +0100 |
commit | 05e3db3ac9edbff0e4885ef8b42d3a2427c9f027 (patch) | |
tree | 2f959b67638ab1134cfca19ac1f041552a68c335 /src/core/hle/service/server_manager.cpp | |
parent | Merge pull request #12412 from ameerj/gl-query-prims (diff) | |
parent | kernel: fix resource limit imbalance (diff) | |
download | yuzu-05e3db3ac9edbff0e4885ef8b42d3a2427c9f027.tar yuzu-05e3db3ac9edbff0e4885ef8b42d3a2427c9f027.tar.gz yuzu-05e3db3ac9edbff0e4885ef8b42d3a2427c9f027.tar.bz2 yuzu-05e3db3ac9edbff0e4885ef8b42d3a2427c9f027.tar.lz yuzu-05e3db3ac9edbff0e4885ef8b42d3a2427c9f027.tar.xz yuzu-05e3db3ac9edbff0e4885ef8b42d3a2427c9f027.tar.zst yuzu-05e3db3ac9edbff0e4885ef8b42d3a2427c9f027.zip |
Diffstat (limited to 'src/core/hle/service/server_manager.cpp')
-rw-r--r-- | src/core/hle/service/server_manager.cpp | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/src/core/hle/service/server_manager.cpp b/src/core/hle/service/server_manager.cpp index 6808247a9..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. @@ -372,7 +365,7 @@ Result ServerManager::OnSessionEvent(Kernel::KServerSession* session, // Try to receive a message. std::shared_ptr<HLERequestContext> context; - rc = session->ReceiveRequest(&context, manager); + rc = session->ReceiveRequestHLE(&context, manager); // If the session has been closed, we're done. if (rc == Kernel::ResultSessionClosed) { |