diff options
author | Sebastian Valle <subv2112@gmail.com> | 2018-05-20 00:03:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-20 00:03:30 +0200 |
commit | 353e1dd7e43e06b3607a6bd07e93ed2e0da2fcfc (patch) | |
tree | 0a2fe597d4270bbf37d0bd4b008faf8723ec1a7f | |
parent | Add and correct some Error Modules (#444) (diff) | |
parent | Added RequestWithContext & ControlWithContext (diff) | |
download | yuzu-353e1dd7e43e06b3607a6bd07e93ed2e0da2fcfc.tar yuzu-353e1dd7e43e06b3607a6bd07e93ed2e0da2fcfc.tar.gz yuzu-353e1dd7e43e06b3607a6bd07e93ed2e0da2fcfc.tar.bz2 yuzu-353e1dd7e43e06b3607a6bd07e93ed2e0da2fcfc.tar.lz yuzu-353e1dd7e43e06b3607a6bd07e93ed2e0da2fcfc.tar.xz yuzu-353e1dd7e43e06b3607a6bd07e93ed2e0da2fcfc.tar.zst yuzu-353e1dd7e43e06b3607a6bd07e93ed2e0da2fcfc.zip |
-rw-r--r-- | src/core/hle/ipc.h | 2 | ||||
-rw-r--r-- | src/core/hle/kernel/hle_ipc.cpp | 4 | ||||
-rw-r--r-- | src/core/hle/service/service.cpp | 2 |
3 files changed, 7 insertions, 1 deletions
diff --git a/src/core/hle/ipc.h b/src/core/hle/ipc.h index ef6595550..c9257de77 100644 --- a/src/core/hle/ipc.h +++ b/src/core/hle/ipc.h @@ -32,6 +32,8 @@ enum class CommandType : u32 { Close = 2, Request = 4, Control = 5, + RequestWithContext = 6, + ControlWithContext = 7, Unspecified, }; diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index 349bc11df..01904467e 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp @@ -110,7 +110,9 @@ void HLERequestContext::ParseCommandBuffer(u32_le* src_cmdbuf, bool incoming) { // Padding to align to 16 bytes rp.AlignWithPadding(); - if (Session()->IsDomain() && (command_header->type == IPC::CommandType::Request || !incoming)) { + if (Session()->IsDomain() && ((command_header->type == IPC::CommandType::Request || + command_header->type == IPC::CommandType::RequestWithContext) || + !incoming)) { // If this is an incoming message, only CommandType "Request" has a domain header // All outgoing domain messages have the domain header, if only incoming has it if (incoming || domain_message_header) { diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index dc30702c6..5b91089cf 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -144,10 +144,12 @@ ResultCode ServiceFrameworkBase::HandleSyncRequest(Kernel::HLERequestContext& co rb.Push(RESULT_SUCCESS); return ResultCode(ErrorModule::HIPC, ErrorDescription::RemoteProcessDead); } + case IPC::CommandType::ControlWithContext: case IPC::CommandType::Control: { Core::System::GetInstance().ServiceManager().InvokeControlRequest(context); break; } + case IPC::CommandType::RequestWithContext: case IPC::CommandType::Request: { InvokeRequest(context); break; |