- updated service(s) to be KernelObject's

- various cleanups
This commit is contained in:
bunnei 2014-05-18 21:43:29 -04:00
parent 725d240bf7
commit eab6fd01d7
7 changed files with 31 additions and 59 deletions

View file

@ -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