mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Merge pull request #4689 from wwylele/server-leak
ServiceFrameworkBase: remove ownership to ServerPort
This commit is contained in:
		
						commit
						c1de8acfe5
					
				
					 3 changed files with 2 additions and 10 deletions
				
			
		|  | @ -293,7 +293,6 @@ void System::Shutdown() { | |||
|     // Shutdown emulation session
 | ||||
|     GDBStub::Shutdown(); | ||||
|     VideoCore::Shutdown(); | ||||
|     kernel.reset(); | ||||
|     HW::Shutdown(); | ||||
|     telemetry_session.reset(); | ||||
|     rpc_server.reset(); | ||||
|  | @ -301,6 +300,7 @@ void System::Shutdown() { | |||
|     service_manager.reset(); | ||||
|     dsp_core.reset(); | ||||
|     cpu_core.reset(); | ||||
|     kernel.reset(); | ||||
|     timing.reset(); | ||||
|     app_loader.reset(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -131,13 +131,11 @@ ServiceFrameworkBase::ServiceFrameworkBase(const char* service_name, u32 max_ses | |||
| ServiceFrameworkBase::~ServiceFrameworkBase() = default; | ||||
| 
 | ||||
| void ServiceFrameworkBase::InstallAsService(SM::ServiceManager& service_manager) { | ||||
|     ASSERT(port == nullptr); | ||||
|     port = service_manager.RegisterService(service_name, max_sessions).Unwrap(); | ||||
|     auto port = service_manager.RegisterService(service_name, max_sessions).Unwrap(); | ||||
|     port->SetHleHandler(shared_from_this()); | ||||
| } | ||||
| 
 | ||||
| void ServiceFrameworkBase::InstallAsNamedPort(Kernel::KernelSystem& kernel) { | ||||
|     ASSERT(port == nullptr); | ||||
|     auto [server_port, client_port] = kernel.CreatePortPair(max_sessions, service_name); | ||||
|     server_port->SetHleHandler(shared_from_this()); | ||||
|     kernel.AddNamedPort(service_name, std::move(client_port)); | ||||
|  |  | |||
|  | @ -92,12 +92,6 @@ private: | |||
|     /// Maximum number of concurrent sessions that this service can handle.
 | ||||
|     u32 max_sessions; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Port where incoming connections will be received. Only created when InstallAsService() or | ||||
|      * InstallAsNamedPort() are called. | ||||
|      */ | ||||
|     Kernel::SharedPtr<Kernel::ServerPort> port; | ||||
| 
 | ||||
|     /// Function used to safely up-cast pointers to the derived class before invoking a handler.
 | ||||
|     InvokerFn* handler_invoker; | ||||
|     boost::container::flat_map<u32, FunctionInfoBase> handlers; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue