diff options
| author | 2020-09-17 10:43:54 -0400 | |
|---|---|---|
| committer | 2020-09-17 10:43:54 -0400 | |
| commit | 78b1bc3b619dd441d10f1131bca7ccf260ed4e80 (patch) | |
| tree | 394f464eea66ce00ea7a8092d73f337a1470198c /src/core/hle | |
| parent | Merge pull request #4653 from ReinUsesLisp/gc-warns (diff) | |
| download | yuzu-78b1bc3b619dd441d10f1131bca7ccf260ed4e80.tar.gz yuzu-78b1bc3b619dd441d10f1131bca7ccf260ed4e80.tar.xz yuzu-78b1bc3b619dd441d10f1131bca7ccf260ed4e80.zip | |
service/sm: Eliminate dependency on the global system instance
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/service/sm/sm.cpp | 7 | ||||
| -rw-r--r-- | src/core/hle/service/sm/sm.h | 7 |
2 files changed, 8 insertions, 6 deletions
diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp index 586b3d8eb..2aedc93ea 100644 --- a/src/core/hle/service/sm/sm.cpp +++ b/src/core/hle/service/sm/sm.cpp | |||
| @@ -19,7 +19,7 @@ constexpr ResultCode ERR_ALREADY_REGISTERED(ErrorModule::SM, 4); | |||
| 19 | constexpr ResultCode ERR_INVALID_NAME(ErrorModule::SM, 6); | 19 | constexpr ResultCode ERR_INVALID_NAME(ErrorModule::SM, 6); |
| 20 | constexpr ResultCode ERR_SERVICE_NOT_REGISTERED(ErrorModule::SM, 7); | 20 | constexpr ResultCode ERR_SERVICE_NOT_REGISTERED(ErrorModule::SM, 7); |
| 21 | 21 | ||
| 22 | ServiceManager::ServiceManager() = default; | 22 | ServiceManager::ServiceManager(Kernel::KernelCore& kernel_) : kernel{kernel_} {} |
| 23 | ServiceManager::~ServiceManager() = default; | 23 | ServiceManager::~ServiceManager() = default; |
| 24 | 24 | ||
| 25 | void ServiceManager::InvokeControlRequest(Kernel::HLERequestContext& context) { | 25 | void ServiceManager::InvokeControlRequest(Kernel::HLERequestContext& context) { |
| @@ -48,8 +48,8 @@ void ServiceManager::InstallInterfaces(std::shared_ptr<ServiceManager> self, | |||
| 48 | self->controller_interface = std::make_unique<Controller>(); | 48 | self->controller_interface = std::make_unique<Controller>(); |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | ResultVal<std::shared_ptr<Kernel::ServerPort>> ServiceManager::RegisterService( | 51 | ResultVal<std::shared_ptr<Kernel::ServerPort>> ServiceManager::RegisterService(std::string name, |
| 52 | std::string name, unsigned int max_sessions) { | 52 | u32 max_sessions) { |
| 53 | 53 | ||
| 54 | CASCADE_CODE(ValidateServiceName(name)); | 54 | CASCADE_CODE(ValidateServiceName(name)); |
| 55 | 55 | ||
| @@ -58,7 +58,6 @@ ResultVal<std::shared_ptr<Kernel::ServerPort>> ServiceManager::RegisterService( | |||
| 58 | return ERR_ALREADY_REGISTERED; | 58 | return ERR_ALREADY_REGISTERED; |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | auto& kernel = Core::System::GetInstance().Kernel(); | ||
| 62 | auto [server_port, client_port] = | 61 | auto [server_port, client_port] = |
| 63 | Kernel::ServerPort::CreatePortPair(kernel, max_sessions, name); | 62 | Kernel::ServerPort::CreatePortPair(kernel, max_sessions, name); |
| 64 | 63 | ||
diff --git a/src/core/hle/service/sm/sm.h b/src/core/hle/service/sm/sm.h index aabf166b7..6790c86f0 100644 --- a/src/core/hle/service/sm/sm.h +++ b/src/core/hle/service/sm/sm.h | |||
| @@ -48,11 +48,11 @@ class ServiceManager { | |||
| 48 | public: | 48 | public: |
| 49 | static void InstallInterfaces(std::shared_ptr<ServiceManager> self, Kernel::KernelCore& kernel); | 49 | static void InstallInterfaces(std::shared_ptr<ServiceManager> self, Kernel::KernelCore& kernel); |
| 50 | 50 | ||
| 51 | ServiceManager(); | 51 | explicit ServiceManager(Kernel::KernelCore& kernel_); |
| 52 | ~ServiceManager(); | 52 | ~ServiceManager(); |
| 53 | 53 | ||
| 54 | ResultVal<std::shared_ptr<Kernel::ServerPort>> RegisterService(std::string name, | 54 | ResultVal<std::shared_ptr<Kernel::ServerPort>> RegisterService(std::string name, |
| 55 | unsigned int max_sessions); | 55 | u32 max_sessions); |
| 56 | ResultCode UnregisterService(const std::string& name); | 56 | ResultCode UnregisterService(const std::string& name); |
| 57 | ResultVal<std::shared_ptr<Kernel::ClientPort>> GetServicePort(const std::string& name); | 57 | ResultVal<std::shared_ptr<Kernel::ClientPort>> GetServicePort(const std::string& name); |
| 58 | ResultVal<std::shared_ptr<Kernel::ClientSession>> ConnectToService(const std::string& name); | 58 | ResultVal<std::shared_ptr<Kernel::ClientSession>> ConnectToService(const std::string& name); |
| @@ -79,6 +79,9 @@ private: | |||
| 79 | 79 | ||
| 80 | /// Map of registered services, retrieved using GetServicePort or ConnectToService. | 80 | /// Map of registered services, retrieved using GetServicePort or ConnectToService. |
| 81 | std::unordered_map<std::string, std::shared_ptr<Kernel::ClientPort>> registered_services; | 81 | std::unordered_map<std::string, std::shared_ptr<Kernel::ClientPort>> registered_services; |
| 82 | |||
| 83 | /// Kernel context | ||
| 84 | Kernel::KernelCore& kernel; | ||
| 82 | }; | 85 | }; |
| 83 | 86 | ||
| 84 | } // namespace Service::SM | 87 | } // namespace Service::SM |