summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorGravatar Subv2018-01-06 21:14:14 -0500
committerGravatar bunnei2018-01-07 17:11:43 -0500
commit226786f0b05405b4c0287786f106ae2e08feefec (patch)
treef4cb770adc575fa749b98e60f8f5fa0012cdc4c6 /src/core/hle/kernel
parentsvc: Implement svcSignalProcessWideKey. (diff)
downloadyuzu-226786f0b05405b4c0287786f106ae2e08feefec.tar.gz
yuzu-226786f0b05405b4c0287786f106ae2e08feefec.tar.xz
yuzu-226786f0b05405b4c0287786f106ae2e08feefec.zip
IPC: Use the correct size when pushing raw data to the command buffer and fixed pushing domain objects.
Domain object ids are always stored immediately after the raw data.
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp2
-rw-r--r--src/core/hle/kernel/hle_ipc.h8
2 files changed, 7 insertions, 3 deletions
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index 85dd80159..e784d59cc 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -95,7 +95,7 @@ void HLERequestContext::ParseCommandBuffer(u32_le* src_cmdbuf, bool incoming) {
95 // If this is an incoming message, only CommandType "Request" has a domain header 95 // If this is an incoming message, only CommandType "Request" has a domain header
96 // All outgoing domain messages have the domain header 96 // All outgoing domain messages have the domain header
97 domain_message_header = 97 domain_message_header =
98 std::make_unique<IPC::DomainMessageHeader>(rp.PopRaw<IPC::DomainMessageHeader>()); 98 std::make_unique<IPC::DomainRequestMessageHeader>(rp.PopRaw<IPC::DomainRequestMessageHeader>());
99 } 99 }
100 100
101 data_payload_header = 101 data_payload_header =
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h
index 7de13b36b..b5649931d 100644
--- a/src/core/hle/kernel/hle_ipc.h
+++ b/src/core/hle/kernel/hle_ipc.h
@@ -154,7 +154,11 @@ public:
154 return buffer_x_desciptors; 154 return buffer_x_desciptors;
155 } 155 }
156 156
157 const std::unique_ptr<IPC::DomainMessageHeader>& GetDomainMessageHeader() const { 157 const std::vector<IPC::BufferDescriptorABW>& BufferDescriptorA() const {
158 return buffer_a_desciptors;
159 }
160
161 const std::unique_ptr<IPC::DomainRequestMessageHeader>& GetDomainMessageHeader() const {
158 return domain_message_header; 162 return domain_message_header;
159 } 163 }
160 164
@@ -172,7 +176,7 @@ private:
172 std::unique_ptr<IPC::CommandHeader> command_header; 176 std::unique_ptr<IPC::CommandHeader> command_header;
173 std::unique_ptr<IPC::HandleDescriptorHeader> handle_descriptor_header; 177 std::unique_ptr<IPC::HandleDescriptorHeader> handle_descriptor_header;
174 std::unique_ptr<IPC::DataPayloadHeader> data_payload_header; 178 std::unique_ptr<IPC::DataPayloadHeader> data_payload_header;
175 std::unique_ptr<IPC::DomainMessageHeader> domain_message_header; 179 std::unique_ptr<IPC::DomainRequestMessageHeader> domain_message_header;
176 std::vector<IPC::BufferDescriptorX> buffer_x_desciptors; 180 std::vector<IPC::BufferDescriptorX> buffer_x_desciptors;
177 std::vector<IPC::BufferDescriptorABW> buffer_a_desciptors; 181 std::vector<IPC::BufferDescriptorABW> buffer_a_desciptors;
178 std::vector<IPC::BufferDescriptorABW> buffer_b_desciptors; 182 std::vector<IPC::BufferDescriptorABW> buffer_b_desciptors;