mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	HLE: Remove BaseInterface and add ns.cpp back
This commit is contained in:
		
							parent
							
								
									f2167d76a8
								
							
						
					
					
						commit
						6c8faaf2c2
					
				
					 6 changed files with 64 additions and 42 deletions
				
			
		|  | @ -205,6 +205,8 @@ add_library(core STATIC | ||||||
|     hle/service/apt/apt_s.h |     hle/service/apt/apt_s.h | ||||||
|     hle/service/apt/apt_u.cpp |     hle/service/apt/apt_u.cpp | ||||||
|     hle/service/apt/apt_u.h |     hle/service/apt/apt_u.h | ||||||
|  |     hle/service/apt/ns.cpp | ||||||
|  |     hle/service/apt/ns.h | ||||||
|     hle/service/apt/ns_s.cpp |     hle/service/apt/ns_s.cpp | ||||||
|     hle/service/apt/ns_s.h |     hle/service/apt/ns_s.h | ||||||
|     hle/service/apt/bcfnt/bcfnt.cpp |     hle/service/apt/bcfnt/bcfnt.cpp | ||||||
|  |  | ||||||
|  | @ -7,8 +7,8 @@ | ||||||
| #include "core/hle/applets/applet.h" | #include "core/hle/applets/applet.h" | ||||||
| #include "core/hle/service/apt/applet_manager.h" | #include "core/hle/service/apt/applet_manager.h" | ||||||
| #include "core/hle/service/apt/errors.h" | #include "core/hle/service/apt/errors.h" | ||||||
|  | #include "core/hle/service/apt/ns.h" | ||||||
| #include "core/hle/service/cfg/cfg.h" | #include "core/hle/service/cfg/cfg.h" | ||||||
| #include "core/hle/service/ns/ns.h" |  | ||||||
| 
 | 
 | ||||||
| namespace Service::APT { | namespace Service::APT { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -30,7 +30,7 @@ | ||||||
| namespace Service::APT { | namespace Service::APT { | ||||||
| 
 | 
 | ||||||
| Module::NSInterface::NSInterface(std::shared_ptr<Module> apt, const char* name, u32 max_session) | Module::NSInterface::NSInterface(std::shared_ptr<Module> apt, const char* name, u32 max_session) | ||||||
|     : ServiceFramework(name, max_session), BaseInterface(std::move(apt)) {} |     : ServiceFramework(name, max_session), apt(std::move(apt)) {} | ||||||
| 
 | 
 | ||||||
| Module::NSInterface::~NSInterface() = default; | Module::NSInterface::~NSInterface() = default; | ||||||
| 
 | 
 | ||||||
|  | @ -860,7 +860,7 @@ void Module::APTInterface::CheckNew3DS(Kernel::HLERequestContext& ctx) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Module::APTInterface::APTInterface(std::shared_ptr<Module> apt, const char* name, u32 max_session) | Module::APTInterface::APTInterface(std::shared_ptr<Module> apt, const char* name, u32 max_session) | ||||||
|     : ServiceFramework(name, max_session), BaseInterface(std::move(apt)) {} |     : ServiceFramework(name, max_session), apt(std::move(apt)) {} | ||||||
| 
 | 
 | ||||||
| Module::APTInterface::~APTInterface() = default; | Module::APTInterface::~APTInterface() = default; | ||||||
| 
 | 
 | ||||||
|  | @ -889,27 +889,3 @@ void InstallInterfaces(Core::System& system) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| } // namespace Service::APT
 | } // namespace Service::APT
 | ||||||
| 
 |  | ||||||
| namespace Service::NS { |  | ||||||
| 
 |  | ||||||
| Kernel::SharedPtr<Kernel::Process> LaunchTitle(FS::MediaType media_type, u64 title_id) { |  | ||||||
|     std::string path = AM::GetTitleContentPath(media_type, title_id); |  | ||||||
|     auto loader = Loader::GetLoader(path); |  | ||||||
| 
 |  | ||||||
|     if (!loader) { |  | ||||||
|         LOG_WARNING(Service_NS, "Could not find .app for title 0x{:016x}", title_id); |  | ||||||
|         return nullptr; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     Kernel::SharedPtr<Kernel::Process> process; |  | ||||||
|     Loader::ResultStatus result = loader->Load(process); |  | ||||||
| 
 |  | ||||||
|     if (result != Loader::ResultStatus::Success) { |  | ||||||
|         LOG_WARNING(Service_NS, "Error loading .app for title 0x{:016x}", title_id); |  | ||||||
|         return nullptr; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return process; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| } // namespace Service::NS
 |  | ||||||
|  |  | ||||||
|  | @ -60,21 +60,16 @@ public: | ||||||
|     explicit Module(Core::System& system); |     explicit Module(Core::System& system); | ||||||
|     ~Module(); |     ~Module(); | ||||||
| 
 | 
 | ||||||
|     class BaseInterface { |     class NSInterface : public ServiceFramework<NSInterface> { | ||||||
|     public: |  | ||||||
|         explicit BaseInterface(std::shared_ptr<Module> apt) : apt(apt) {} |  | ||||||
| 
 |  | ||||||
|     protected: |  | ||||||
|         std::shared_ptr<Module> apt; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     class NSInterface : public ServiceFramework<NSInterface>, public BaseInterface { |  | ||||||
|     public: |     public: | ||||||
|         NSInterface(std::shared_ptr<Module> apt, const char* name, u32 max_session); |         NSInterface(std::shared_ptr<Module> apt, const char* name, u32 max_session); | ||||||
|         ~NSInterface(); |         ~NSInterface(); | ||||||
|  | 
 | ||||||
|  |     private: | ||||||
|  |         std::shared_ptr<Module> apt; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     class APTInterface : public ServiceFramework<APTInterface>, public BaseInterface { |     class APTInterface : public ServiceFramework<APTInterface> { | ||||||
|     public: |     public: | ||||||
|         APTInterface(std::shared_ptr<Module> apt, const char* name, u32 max_session); |         APTInterface(std::shared_ptr<Module> apt, const char* name, u32 max_session); | ||||||
|         ~APTInterface(); |         ~APTInterface(); | ||||||
|  | @ -608,6 +603,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     private: |     private: | ||||||
|         bool application_reset_prepared{}; |         bool application_reset_prepared{}; | ||||||
|  |         std::shared_ptr<Module> apt; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|  | @ -639,8 +635,3 @@ private: | ||||||
| void InstallInterfaces(Core::System& system); | void InstallInterfaces(Core::System& system); | ||||||
| 
 | 
 | ||||||
| } // namespace Service::APT
 | } // namespace Service::APT
 | ||||||
| 
 |  | ||||||
| namespace Service::NS { |  | ||||||
| /// Loads and launches the title identified by title_id in the specified media type.
 |  | ||||||
| Kernel::SharedPtr<Kernel::Process> LaunchTitle(FS::MediaType media_type, u64 title_id); |  | ||||||
| } // namespace Service::NS
 |  | ||||||
|  |  | ||||||
							
								
								
									
										33
									
								
								src/core/hle/service/apt/ns.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/core/hle/service/apt/ns.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | ||||||
|  | // Copyright 2017 Citra Emulator Project
 | ||||||
|  | // Licensed under GPLv2 or any later version
 | ||||||
|  | // Refer to the license.txt file included.
 | ||||||
|  | 
 | ||||||
|  | #include <cinttypes> | ||||||
|  | #include "core/core.h" | ||||||
|  | #include "core/hle/service/am/am.h" | ||||||
|  | #include "core/hle/service/apt/ns.h" | ||||||
|  | #include "core/loader/loader.h" | ||||||
|  | 
 | ||||||
|  | namespace Service::NS { | ||||||
|  | 
 | ||||||
|  | Kernel::SharedPtr<Kernel::Process> LaunchTitle(FS::MediaType media_type, u64 title_id) { | ||||||
|  |     std::string path = AM::GetTitleContentPath(media_type, title_id); | ||||||
|  |     auto loader = Loader::GetLoader(path); | ||||||
|  | 
 | ||||||
|  |     if (!loader) { | ||||||
|  |         LOG_WARNING(Service_NS, "Could not find .app for title 0x{:016x}", title_id); | ||||||
|  |         return nullptr; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     Kernel::SharedPtr<Kernel::Process> process; | ||||||
|  |     Loader::ResultStatus result = loader->Load(process); | ||||||
|  | 
 | ||||||
|  |     if (result != Loader::ResultStatus::Success) { | ||||||
|  |         LOG_WARNING(Service_NS, "Error loading .app for title 0x{:016x}", title_id); | ||||||
|  |         return nullptr; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return process; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | } // namespace Service::NS
 | ||||||
							
								
								
									
										20
									
								
								src/core/hle/service/apt/ns.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/core/hle/service/apt/ns.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | // Copyright 2017 Citra Emulator Project
 | ||||||
|  | // Licensed under GPLv2 or any later version
 | ||||||
|  | // Refer to the license.txt file included.
 | ||||||
|  | 
 | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include "core/hle/kernel/process.h" | ||||||
|  | #include "core/hle/service/fs/archive.h" | ||||||
|  | #include "core/hle/service/service.h" | ||||||
|  | 
 | ||||||
|  | namespace Core { | ||||||
|  | class System; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | namespace Service::NS { | ||||||
|  | 
 | ||||||
|  | /// Loads and launches the title identified by title_id in the specified media type.
 | ||||||
|  | Kernel::SharedPtr<Kernel::Process> LaunchTitle(FS::MediaType media_type, u64 title_id); | ||||||
|  | 
 | ||||||
|  | } // namespace Service::NS
 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue