diff options
author | bunnei <ericbunnie@gmail.com> | 2014-05-19 03:43:29 +0200 |
---|---|---|
committer | bunnei <ericbunnie@gmail.com> | 2014-05-19 03:43:29 +0200 |
commit | eab6fd01d7d2e9b7434a8c5654d424cb563c3784 (patch) | |
tree | 8fcef16c0a2d6fdc078a9c49d55a7caa6c02a755 /src/core/hle/service/service.cpp | |
parent | renamed "UID" to "Handle" where appropriate (diff) | |
download | yuzu-eab6fd01d7d2e9b7434a8c5654d424cb563c3784.tar yuzu-eab6fd01d7d2e9b7434a8c5654d424cb563c3784.tar.gz yuzu-eab6fd01d7d2e9b7434a8c5654d424cb563c3784.tar.bz2 yuzu-eab6fd01d7d2e9b7434a8c5654d424cb563c3784.tar.lz yuzu-eab6fd01d7d2e9b7434a8c5654d424cb563c3784.tar.xz yuzu-eab6fd01d7d2e9b7434a8c5654d424cb563c3784.tar.zst yuzu-eab6fd01d7d2e9b7434a8c5654d424cb563c3784.zip |
Diffstat (limited to 'src/core/hle/service/service.cpp')
-rw-r--r-- | src/core/hle/service/service.cpp | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 5601e59a1..b3e414e0f 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -7,12 +7,15 @@ #include "common/string_util.h" #include "core/hle/hle.h" + #include "core/hle/service/service.h" #include "core/hle/service/apt.h" #include "core/hle/service/gsp.h" #include "core/hle/service/hid.h" #include "core/hle/service/srv.h" +#include "core/hle/kernel/kernel.h" + namespace Service { Manager* g_manager = NULL; ///< Service manager @@ -31,32 +34,21 @@ Manager::~Manager() { /// Add a service to the manager (does not create it though) void Manager::AddService(Interface* service) { - int index = m_services.size(); - Handle handle = GetHandleFromIndex(index); - + m_port_map[service->GetPortName()] = g_kernel_objects.Create(service); m_services.push_back(service); - - m_port_map[service->GetPortName()] = handle; - service->m_handle = handle; } /// Removes a service from the manager, also frees memory void Manager::DeleteService(std::string port_name) { - auto service = FetchFromPortName(port_name); - - m_services.erase(m_services.begin() + GetIndexFromHandle(service->m_handle)); + Interface* service = FetchFromPortName(port_name); + m_services.erase(std::remove(m_services.begin(), m_services.end(), service), m_services.end()); m_port_map.erase(port_name); - delete service; } /// Get a Service Interface from its Handle Interface* Manager::FetchFromHandle(Handle handle) { - int index = GetIndexFromHandle(handle); - if (index < (int)m_services.size()) { - return m_services[index]; - } - return NULL; + return g_kernel_objects.GetFast<Interface>(handle); } /// Get a Service Interface from its port |