diff options
| author | 2018-10-29 23:55:59 -0400 | |
|---|---|---|
| committer | 2018-10-29 23:55:59 -0400 | |
| commit | adf26ae668eada321b69e52be40300110e47aa56 (patch) | |
| tree | 27692107186c4dc4498ef9a038bdd3fd47abf9fd | |
| parent | Merge pull request #1611 from lioncash/const (diff) | |
| parent | hle_ipc: Add member function for querying the existence of a domain header (diff) | |
| download | yuzu-adf26ae668eada321b69e52be40300110e47aa56.tar.gz yuzu-adf26ae668eada321b69e52be40300110e47aa56.tar.xz yuzu-adf26ae668eada321b69e52be40300110e47aa56.zip | |
Merge pull request #1621 from lioncash/ipc
hle_ipc: Make GetDomainMessageHeader return a regular pointer
Diffstat (limited to '')
| -rw-r--r-- | src/core/hle/ipc_helpers.h | 3 | ||||
| -rw-r--r-- | src/core/hle/kernel/hle_ipc.h | 8 | ||||
| -rw-r--r-- | src/core/hle/kernel/server_session.cpp | 4 |
3 files changed, 9 insertions, 6 deletions
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h index a4bfe2eb0..0a7142ada 100644 --- a/src/core/hle/ipc_helpers.h +++ b/src/core/hle/ipc_helpers.h | |||
| @@ -117,8 +117,7 @@ public: | |||
| 117 | 117 | ||
| 118 | AlignWithPadding(); | 118 | AlignWithPadding(); |
| 119 | 119 | ||
| 120 | const bool request_has_domain_header{context.GetDomainMessageHeader() != nullptr}; | 120 | if (context.Session()->IsDomain() && context.HasDomainMessageHeader()) { |
| 121 | if (context.Session()->IsDomain() && request_has_domain_header) { | ||
| 122 | IPC::DomainMessageHeader domain_header{}; | 121 | IPC::DomainMessageHeader domain_header{}; |
| 123 | domain_header.num_objects = num_domain_objects; | 122 | domain_header.num_objects = num_domain_objects; |
| 124 | PushRaw(domain_header); | 123 | PushRaw(domain_header); |
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h index f01491daa..a38e34b74 100644 --- a/src/core/hle/kernel/hle_ipc.h +++ b/src/core/hle/kernel/hle_ipc.h | |||
| @@ -161,8 +161,12 @@ public: | |||
| 161 | return buffer_c_desciptors; | 161 | return buffer_c_desciptors; |
| 162 | } | 162 | } |
| 163 | 163 | ||
| 164 | const std::shared_ptr<IPC::DomainMessageHeader>& GetDomainMessageHeader() const { | 164 | const IPC::DomainMessageHeader* GetDomainMessageHeader() const { |
| 165 | return domain_message_header; | 165 | return domain_message_header.get(); |
| 166 | } | ||
| 167 | |||
| 168 | bool HasDomainMessageHeader() const { | ||
| 169 | return domain_message_header != nullptr; | ||
| 166 | } | 170 | } |
| 167 | 171 | ||
| 168 | /// Helper function to read a buffer using the appropriate buffer descriptor | 172 | /// Helper function to read a buffer using the appropriate buffer descriptor |
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp index 5fc320403..80897f3a4 100644 --- a/src/core/hle/kernel/server_session.cpp +++ b/src/core/hle/kernel/server_session.cpp | |||
| @@ -63,7 +63,7 @@ void ServerSession::Acquire(Thread* thread) { | |||
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | ResultCode ServerSession::HandleDomainSyncRequest(Kernel::HLERequestContext& context) { | 65 | ResultCode ServerSession::HandleDomainSyncRequest(Kernel::HLERequestContext& context) { |
| 66 | auto& domain_message_header = context.GetDomainMessageHeader(); | 66 | auto* const domain_message_header = context.GetDomainMessageHeader(); |
| 67 | if (domain_message_header) { | 67 | if (domain_message_header) { |
| 68 | // Set domain handlers in HLE context, used for domain objects (IPC interfaces) as inputs | 68 | // Set domain handlers in HLE context, used for domain objects (IPC interfaces) as inputs |
| 69 | context.SetDomainRequestHandlers(domain_request_handlers); | 69 | context.SetDomainRequestHandlers(domain_request_handlers); |
| @@ -111,7 +111,7 @@ ResultCode ServerSession::HandleSyncRequest(SharedPtr<Thread> thread) { | |||
| 111 | 111 | ||
| 112 | ResultCode result = RESULT_SUCCESS; | 112 | ResultCode result = RESULT_SUCCESS; |
| 113 | // If the session has been converted to a domain, handle the domain request | 113 | // If the session has been converted to a domain, handle the domain request |
| 114 | if (IsDomain() && context.GetDomainMessageHeader()) { | 114 | if (IsDomain() && context.HasDomainMessageHeader()) { |
| 115 | result = HandleDomainSyncRequest(context); | 115 | result = HandleDomainSyncRequest(context); |
| 116 | // If there is no domain header, the regular session handler is used | 116 | // If there is no domain header, the regular session handler is used |
| 117 | } else if (hle_handler != nullptr) { | 117 | } else if (hle_handler != nullptr) { |