mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +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
				
			
		| 
						 | 
				
			
			@ -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