mirror of
				https://git.h3cjp.net/H3cJP/citra.git
				synced 2025-10-30 22:44:58 +00:00 
			
		
		
		
	ipc_helper: split PushMoveObjects and PushCopyObjects
This commit is contained in:
		
							parent
							
								
									2664042325
								
							
						
					
					
						commit
						fda023c9fa
					
				|  | @ -114,7 +114,10 @@ public: | |||
|     void PushMoveHandles(H... handles); | ||||
| 
 | ||||
|     template <typename... O> | ||||
|     void PushObjects(Kernel::SharedPtr<O>... pointers); | ||||
|     void PushCopyObjects(Kernel::SharedPtr<O>... pointers); | ||||
| 
 | ||||
|     template <typename... O> | ||||
|     void PushMoveObjects(Kernel::SharedPtr<O>... pointers); | ||||
| 
 | ||||
|     void PushCurrentPIDHandle(); | ||||
| 
 | ||||
|  | @ -187,7 +190,12 @@ inline void RequestBuilder::PushMoveHandles(H... handles) { | |||
| } | ||||
| 
 | ||||
| template <typename... O> | ||||
| inline void RequestBuilder::PushObjects(Kernel::SharedPtr<O>... pointers) { | ||||
| inline void RequestBuilder::PushCopyObjects(Kernel::SharedPtr<O>... pointers) { | ||||
|     PushCopyHandles(context->AddOutgoingHandle(std::move(pointers))...); | ||||
| } | ||||
| 
 | ||||
| template <typename... O> | ||||
| inline void RequestBuilder::PushMoveObjects(Kernel::SharedPtr<O>... pointers) { | ||||
|     PushMoveHandles(context->AddOutgoingHandle(std::move(pointers))...); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -206,7 +206,7 @@ void File::OpenLinkFile(Kernel::HLERequestContext& ctx) { | |||
|     ClientConnected(std::get<SharedPtr<ServerSession>>(sessions)); | ||||
| 
 | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.PushObjects(std::get<SharedPtr<ClientSession>>(sessions)); | ||||
|     rb.PushMoveObjects(std::get<SharedPtr<ClientSession>>(sessions)); | ||||
| } | ||||
| 
 | ||||
| File::~File() {} | ||||
|  |  | |||
|  | @ -66,7 +66,7 @@ void SRV::EnableNotification(Kernel::HLERequestContext& ctx) { | |||
| 
 | ||||
|     IPC::RequestBuilder rb = rp.MakeBuilder(1, 2); | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.PushObjects(notification_semaphore); | ||||
|     rb.PushCopyObjects(notification_semaphore); | ||||
|     LOG_WARNING(Service_SRV, "(STUBBED) called"); | ||||
| } | ||||
| 
 | ||||
|  | @ -114,7 +114,7 @@ void SRV::GetServiceHandle(Kernel::HLERequestContext& ctx) { | |||
|                   (*session)->GetObjectId()); | ||||
|         IPC::RequestBuilder rb = rp.MakeBuilder(1, 2); | ||||
|         rb.Push(session.Code()); | ||||
|         rb.PushObjects(std::move(session).Unwrap()); | ||||
|         rb.PushMoveObjects(std::move(session).Unwrap()); | ||||
|     } else if (session.Code() == Kernel::ERR_MAX_CONNECTIONS_REACHED && wait_until_available) { | ||||
|         LOG_WARNING(Service_SRV, "called service=%s -> ERR_MAX_CONNECTIONS_REACHED", name.c_str()); | ||||
|         // TODO(Subv): Put the caller guest thread to sleep until this port becomes available again.
 | ||||
|  | @ -204,7 +204,7 @@ void SRV::RegisterService(Kernel::HLERequestContext& ctx) { | |||
| 
 | ||||
|     IPC::RequestBuilder rb = rp.MakeBuilder(1, 2); | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.PushObjects(port.Unwrap()); | ||||
|     rb.PushMoveObjects(port.Unwrap()); | ||||
| } | ||||
| 
 | ||||
| SRV::SRV(std::shared_ptr<ServiceManager> service_manager) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue