Browse Source
Merge pull request #1621 from lioncash/ipc
hle_ipc: Make GetDomainMessageHeader return a regular pointer
pull/15/merge
bunnei
7 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
9 additions and
6 deletions
-
src/core/hle/ipc_helpers.h
-
src/core/hle/kernel/hle_ipc.h
-
src/core/hle/kernel/server_session.cpp
|
|
|
@ -117,8 +117,7 @@ public: |
|
|
|
|
|
|
|
AlignWithPadding(); |
|
|
|
|
|
|
|
const bool request_has_domain_header{context.GetDomainMessageHeader() != nullptr}; |
|
|
|
if (context.Session()->IsDomain() && request_has_domain_header) { |
|
|
|
if (context.Session()->IsDomain() && context.HasDomainMessageHeader()) { |
|
|
|
IPC::DomainMessageHeader domain_header{}; |
|
|
|
domain_header.num_objects = num_domain_objects; |
|
|
|
PushRaw(domain_header); |
|
|
|
|
|
|
|
@ -161,8 +161,12 @@ public: |
|
|
|
return buffer_c_desciptors; |
|
|
|
} |
|
|
|
|
|
|
|
const std::shared_ptr<IPC::DomainMessageHeader>& GetDomainMessageHeader() const { |
|
|
|
return domain_message_header; |
|
|
|
const IPC::DomainMessageHeader* GetDomainMessageHeader() const { |
|
|
|
return domain_message_header.get(); |
|
|
|
} |
|
|
|
|
|
|
|
bool HasDomainMessageHeader() const { |
|
|
|
return domain_message_header != nullptr; |
|
|
|
} |
|
|
|
|
|
|
|
/// Helper function to read a buffer using the appropriate buffer descriptor |
|
|
|
|
|
|
|
@ -63,7 +63,7 @@ void ServerSession::Acquire(Thread* thread) { |
|
|
|
} |
|
|
|
|
|
|
|
ResultCode ServerSession::HandleDomainSyncRequest(Kernel::HLERequestContext& context) { |
|
|
|
auto& domain_message_header = context.GetDomainMessageHeader(); |
|
|
|
auto* const domain_message_header = context.GetDomainMessageHeader(); |
|
|
|
if (domain_message_header) { |
|
|
|
// Set domain handlers in HLE context, used for domain objects (IPC interfaces) as inputs
|
|
|
|
context.SetDomainRequestHandlers(domain_request_handlers); |
|
|
|
@ -111,7 +111,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 (IsDomain() && context.GetDomainMessageHeader()) { |
|
|
|
if (IsDomain() && context.HasDomainMessageHeader()) { |
|
|
|
result = HandleDomainSyncRequest(context); |
|
|
|
// If there is no domain header, the regular session handler is used
|
|
|
|
} else if (hle_handler != nullptr) { |
|
|
|
|