diff options
author | mailwl <mailwl@gmail.com> | 2018-02-20 19:59:58 +0100 |
---|---|---|
committer | mailwl <mailwl@gmail.com> | 2018-02-20 19:59:58 +0100 |
commit | 827152d1fd72d13b47b331f64455fc2a641877b1 (patch) | |
tree | 7233f6661549d2c0d1de8c037c7124f47b3f57b4 | |
parent | IPC: add domain header to response if only it exists in request (diff) | |
download | yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar.gz yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar.bz2 yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar.lz yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar.xz yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar.zst yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.zip |
-rw-r--r-- | src/core/hle/ipc_helpers.h | 3 | ||||
-rw-r--r-- | src/core/hle/kernel/hle_ipc.cpp | 2 | ||||
-rw-r--r-- | src/core/hle/kernel/server_session.cpp | 2 |
3 files changed, 4 insertions, 3 deletions
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h index 97290fec5..3f87c4297 100644 --- a/src/core/hle/ipc_helpers.h +++ b/src/core/hle/ipc_helpers.h @@ -118,7 +118,8 @@ public: AlignWithPadding(); - if (context.Session()->IsDomain() && context.GetDomainMessageHeader()) { + const bool request_has_domain_header{context.GetDomainMessageHeader() != nullptr}; + if (context.Session()->IsDomain() && request_has_domain_header) { IPC::DomainMessageHeader domain_header{}; domain_header.num_objects = num_domain_objects; PushRaw(domain_header); diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index 3b1f3154d..eef784f5e 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp @@ -198,7 +198,7 @@ ResultCode HLERequestContext::WriteToOutgoingCommandBuffer(u32_le* dst_cmdbuf, P // TODO(Subv): Translate the X/A/B/W buffers. - if (domain_message_header && Session()->IsDomain()) { + if (Session()->IsDomain() && domain_message_header) { ASSERT(domain_message_header->num_objects == domain_objects.size()); // Write the domain objects to the command buffer, these go after the raw untranslated data. // TODO(Subv): This completely ignores C buffers. diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp index 42c2f760b..5f31cf19b 100644 --- a/src/core/hle/kernel/server_session.cpp +++ b/src/core/hle/kernel/server_session.cpp @@ -96,7 +96,7 @@ ResultCode ServerSession::HandleSyncRequest(SharedPtr<Thread> thread) { ResultCode result = RESULT_SUCCESS; // If the session has been converted to a domain, handle the domain request - if (context.GetDomainMessageHeader() && IsDomain()) { + if (IsDomain() && context.GetDomainMessageHeader()) { result = HandleDomainSyncRequest(context); // If there is no domain header, the regular session handler is used } else if (hle_handler != nullptr) { |