mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Convert ACT to the new service framework (#3521)
* Convert ACT to the new service framework * Fix clang-format * le updates to fix stuff * Fixed one last thing. * Well, I fucked up. * Quick hotfix
This commit is contained in:
		
							parent
							
								
									a0f70912e1
								
							
						
					
					
						commit
						935bcdbd20
					
				
					 7 changed files with 57 additions and 49 deletions
				
			
		|  | @ -9,9 +9,15 @@ | |||
| namespace Service { | ||||
| namespace ACT { | ||||
| 
 | ||||
| void Init() { | ||||
|     AddService(new ACT_A); | ||||
|     AddService(new ACT_U); | ||||
| Module::Interface::Interface(std::shared_ptr<Module> act, const char* name) | ||||
|     : ServiceFramework(name, 1 /* Placeholder */), act(std::move(act)) {} | ||||
| 
 | ||||
| Module::Interface::~Interface() = default; | ||||
| 
 | ||||
| void InstallInterfaces(SM::ServiceManager& service_manager) { | ||||
|     auto act = std::make_shared<Module>(); | ||||
|     std::make_shared<ACT_A>(act)->InstallAsService(service_manager); | ||||
|     std::make_shared<ACT_U>(act)->InstallAsService(service_manager); | ||||
| } | ||||
| 
 | ||||
| } // namespace ACT
 | ||||
|  |  | |||
|  | @ -4,11 +4,25 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "core/hle/service/service.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace ACT { | ||||
| 
 | ||||
| /// Initializes all ACT services
 | ||||
| void Init(); | ||||
| class Module final { | ||||
| public: | ||||
|     class Interface : public ServiceFramework<Interface> { | ||||
|     public: | ||||
|         Interface(std::shared_ptr<Module> act, const char* name); | ||||
|         ~Interface(); | ||||
| 
 | ||||
|     private: | ||||
|         std::shared_ptr<Module> act; | ||||
|     }; | ||||
| }; | ||||
| 
 | ||||
| void InstallInterfaces(SM::ServiceManager& service_manager); | ||||
| 
 | ||||
| } // namespace ACT
 | ||||
| } // namespace Service
 | ||||
|  |  | |||
|  | @ -2,13 +2,13 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "core/hle/service/act/act.h" | ||||
| #include "core/hle/service/act/act_a.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace ACT { | ||||
| 
 | ||||
| const Interface::FunctionInfo FunctionTable[] = { | ||||
| ACT_A::ACT_A(std::shared_ptr<Module> act) : Module::Interface(std::move(act), "act:a") { | ||||
|     const FunctionInfo functions[] = { | ||||
|         // act:u shared commands
 | ||||
|         {0x00010084, nullptr, "Initialize"}, | ||||
|         {0x00020040, nullptr, "GetErrorCode"}, | ||||
|  | @ -21,9 +21,7 @@ const Interface::FunctionInfo FunctionTable[] = { | |||
|         {0x04210042, nullptr, "UploadMii"}, | ||||
|         {0x04230082, nullptr, "ValidateMailAddress"}, | ||||
|     }; | ||||
| 
 | ||||
| ACT_A::ACT_A() { | ||||
|     Register(FunctionTable); | ||||
|     RegisterHandlers(functions); | ||||
| } | ||||
| 
 | ||||
| } // namespace ACT
 | ||||
|  |  | |||
|  | @ -4,18 +4,14 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "core/hle/service/service.h" | ||||
| #include "core/hle/service/act/act.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace ACT { | ||||
| 
 | ||||
| class ACT_A final : public Service::Interface { | ||||
| class ACT_A final : public Module::Interface { | ||||
| public: | ||||
|     ACT_A(); | ||||
| 
 | ||||
|     std::string GetPortName() const override { | ||||
|         return "act:a"; | ||||
|     } | ||||
|     explicit ACT_A(std::shared_ptr<Module> act); | ||||
| }; | ||||
| 
 | ||||
| } // namespace ACT
 | ||||
|  |  | |||
|  | @ -2,13 +2,13 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "core/hle/service/act/act.h" | ||||
| #include "core/hle/service/act/act_u.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace ACT { | ||||
| 
 | ||||
| const Interface::FunctionInfo FunctionTable[] = { | ||||
| ACT_U::ACT_U(std::shared_ptr<Module> act) : Module::Interface(std::move(act), "act:u") { | ||||
|     static const FunctionInfo functions[] = { | ||||
|         // clang-format off
 | ||||
|         {0x00010084, nullptr, "Initialize"}, | ||||
|         {0x00020040, nullptr, "GetErrorCode"}, | ||||
|  | @ -17,9 +17,7 @@ const Interface::FunctionInfo FunctionTable[] = { | |||
|         {0x000D0040, nullptr, "GenerateUuid"}, | ||||
|         // clang-format on
 | ||||
|     }; | ||||
| 
 | ||||
| ACT_U::ACT_U() { | ||||
|     Register(FunctionTable); | ||||
|     RegisterHandlers(functions); | ||||
| } | ||||
| 
 | ||||
| } // namespace ACT
 | ||||
|  |  | |||
|  | @ -4,18 +4,14 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "core/hle/service/service.h" | ||||
| #include "core/hle/service/act/act.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace ACT { | ||||
| 
 | ||||
| class ACT_U final : public Interface { | ||||
| class ACT_U final : public Module::Interface { | ||||
| public: | ||||
|     ACT_U(); | ||||
| 
 | ||||
|     std::string GetPortName() const override { | ||||
|         return "act:u"; | ||||
|     } | ||||
|     explicit ACT_U(std::shared_ptr<Module> act); | ||||
| }; | ||||
| 
 | ||||
| } // namespace ACT
 | ||||
|  |  | |||
|  | @ -236,7 +236,7 @@ void Init() { | |||
| 
 | ||||
|     FS::InstallInterfaces(*SM::g_service_manager); | ||||
|     FS::ArchiveInit(); | ||||
|     ACT::Init(); | ||||
|     ACT::InstallInterfaces(*SM::g_service_manager); | ||||
|     AM::InstallInterfaces(*SM::g_service_manager); | ||||
|     APT::InstallInterfaces(*SM::g_service_manager); | ||||
|     BOSS::Init(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue