forked from eden-emu/eden
		
	hle: kernel: Move ServiceThread ownership to KernelCore.
- Fixes a circular dependency which prevented threads from being released on shutdown.
This commit is contained in:
		
							parent
							
								
									b2ef309edb
								
							
						
					
					
						commit
						67051cf10c
					
				
					 4 changed files with 48 additions and 5 deletions
				
			
		|  | @ -25,7 +25,10 @@ | |||
| namespace Kernel { | ||||
| 
 | ||||
| ServerSession::ServerSession(KernelCore& kernel) : SynchronizationObject{kernel} {} | ||||
| ServerSession::~ServerSession() = default; | ||||
| 
 | ||||
| ServerSession::~ServerSession() { | ||||
|     kernel.ReleaseServiceThread(service_thread); | ||||
| } | ||||
| 
 | ||||
| ResultVal<std::shared_ptr<ServerSession>> ServerSession::Create(KernelCore& kernel, | ||||
|                                                                 std::shared_ptr<Session> parent, | ||||
|  | @ -34,7 +37,7 @@ ResultVal<std::shared_ptr<ServerSession>> ServerSession::Create(KernelCore& kern | |||
| 
 | ||||
|     session->name = std::move(name); | ||||
|     session->parent = std::move(parent); | ||||
|     session->service_thread = std::make_unique<ServiceThread>(kernel, 1, session->name); | ||||
|     session->service_thread = kernel.CreateServiceThread(session->name); | ||||
| 
 | ||||
|     return MakeResult(std::move(session)); | ||||
| } | ||||
|  | @ -139,7 +142,11 @@ ResultCode ServerSession::QueueSyncRequest(std::shared_ptr<Thread> thread, | |||
|         std::make_shared<HLERequestContext>(kernel, memory, SharedFrom(this), std::move(thread)); | ||||
| 
 | ||||
|     context->PopulateFromIncomingCommandBuffer(kernel.CurrentProcess()->GetHandleTable(), cmd_buf); | ||||
|     service_thread->QueueSyncRequest(*this, std::move(context)); | ||||
| 
 | ||||
|     if (auto strong_ptr = service_thread.lock()) { | ||||
|         strong_ptr->QueueSyncRequest(*this, std::move(context)); | ||||
|         return RESULT_SUCCESS; | ||||
|     } | ||||
| 
 | ||||
|     return RESULT_SUCCESS; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 bunnei
						bunnei