mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +00:00 
			
		
		
		
	Merge pull request #4736 from FearlessTobi/port-2356
Port yuzu-emu/yuzu#2356: "kernel/{server_port, server_session}: Return pairs instead of tuples from pair creation functions"
This commit is contained in:
		
						commit
						7ea82e7941
					
				
					 8 changed files with 32 additions and 40 deletions
				
			
		| 
						 | 
				
			
			@ -197,8 +197,7 @@ void File::OpenLinkFile(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
    using Kernel::ServerSession;
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x080C, 0, 0);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 2);
 | 
			
		||||
    auto sessions = system.Kernel().CreateSessionPair(GetName());
 | 
			
		||||
    auto server = std::get<std::shared_ptr<ServerSession>>(sessions);
 | 
			
		||||
    auto [server, client] = system.Kernel().CreateSessionPair(GetName());
 | 
			
		||||
    ClientConnected(server);
 | 
			
		||||
 | 
			
		||||
    FileSessionSlot* slot = GetSessionData(server);
 | 
			
		||||
| 
						 | 
				
			
			@ -210,7 +209,7 @@ void File::OpenLinkFile(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
    slot->subfile = false;
 | 
			
		||||
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
    rb.PushMoveObjects(std::get<std::shared_ptr<ClientSession>>(sessions));
 | 
			
		||||
    rb.PushMoveObjects(client);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void File::OpenSubFile(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
| 
						 | 
				
			
			@ -244,8 +243,7 @@ void File::OpenSubFile(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
 | 
			
		||||
    using Kernel::ClientSession;
 | 
			
		||||
    using Kernel::ServerSession;
 | 
			
		||||
    auto sessions = system.Kernel().CreateSessionPair(GetName());
 | 
			
		||||
    auto server = std::get<std::shared_ptr<ServerSession>>(sessions);
 | 
			
		||||
    auto [server, client] = system.Kernel().CreateSessionPair(GetName());
 | 
			
		||||
    ClientConnected(server);
 | 
			
		||||
 | 
			
		||||
    FileSessionSlot* slot = GetSessionData(server);
 | 
			
		||||
| 
						 | 
				
			
			@ -255,12 +253,11 @@ void File::OpenSubFile(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
    slot->subfile = true;
 | 
			
		||||
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
    rb.PushMoveObjects(std::get<std::shared_ptr<ClientSession>>(sessions));
 | 
			
		||||
    rb.PushMoveObjects(client);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::shared_ptr<Kernel::ClientSession> File::Connect() {
 | 
			
		||||
    auto sessions = system.Kernel().CreateSessionPair(GetName());
 | 
			
		||||
    auto server = std::get<std::shared_ptr<Kernel::ServerSession>>(sessions);
 | 
			
		||||
    auto [server, client] = system.Kernel().CreateSessionPair(GetName());
 | 
			
		||||
    ClientConnected(server);
 | 
			
		||||
 | 
			
		||||
    FileSessionSlot* slot = GetSessionData(server);
 | 
			
		||||
| 
						 | 
				
			
			@ -269,7 +266,7 @@ std::shared_ptr<Kernel::ClientSession> File::Connect() {
 | 
			
		|||
    slot->size = backend->GetSize();
 | 
			
		||||
    slot->subfile = false;
 | 
			
		||||
 | 
			
		||||
    return std::get<std::shared_ptr<Kernel::ClientSession>>(sessions);
 | 
			
		||||
    return client;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::size_t File::GetSessionFileOffset(std::shared_ptr<Kernel::ServerSession> session) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -306,9 +306,9 @@ void FS_USER::OpenDirectory(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
    rb.Push(dir_res.Code());
 | 
			
		||||
    if (dir_res.Succeeded()) {
 | 
			
		||||
        std::shared_ptr<Directory> directory = *dir_res;
 | 
			
		||||
        auto sessions = system.Kernel().CreateSessionPair(directory->GetName());
 | 
			
		||||
        directory->ClientConnected(std::get<std::shared_ptr<ServerSession>>(sessions));
 | 
			
		||||
        rb.PushMoveObjects(std::get<std::shared_ptr<ClientSession>>(sessions));
 | 
			
		||||
        auto [server, client] = system.Kernel().CreateSessionPair(directory->GetName());
 | 
			
		||||
        directory->ClientConnected(server);
 | 
			
		||||
        rb.PushMoveObjects(client);
 | 
			
		||||
    } else {
 | 
			
		||||
        LOG_ERROR(Service_FS, "failed to get a handle for directory type={} size={} data={}",
 | 
			
		||||
                  static_cast<u32>(dirname_type), dirname_size, dir_path.DebugStr());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue