mirror of
https://github.com/xenia-project/xenia.git
synced 2025-12-06 07:12:03 +01:00
[XAM] Cleanup XamGetOverlappedResult
This commit is contained in:
parent
f66ab091c1
commit
c4e86cfd2b
|
|
@ -115,24 +115,30 @@ DECLARE_XAM_EXPORT2(XMsgCompleteIORequest, kNone, kImplemented, kSketchy);
|
|||
dword_result_t XamGetOverlappedResult_entry(
|
||||
pointer_t<XAM_OVERLAPPED> overlapped_ptr, lpdword_t length_ptr,
|
||||
dword_t wait) {
|
||||
uint32_t result;
|
||||
uint32_t result = X_STATUS_SUCCESS;
|
||||
|
||||
if (overlapped_ptr->result != X_ERROR_IO_PENDING) {
|
||||
result = overlapped_ptr->result;
|
||||
} else if (!overlapped_ptr->event) {
|
||||
result = X_ERROR_IO_INCOMPLETE;
|
||||
} else {
|
||||
} else if (wait && overlapped_ptr->event) {
|
||||
auto ev = kernel_state()->object_table()->LookupObject<XEvent>(
|
||||
overlapped_ptr->event);
|
||||
result = ev->Wait(3, 1, 0, nullptr);
|
||||
if (XSUCCEEDED(result)) {
|
||||
result = overlapped_ptr->result;
|
||||
} else {
|
||||
result = xboxkrnl::xeRtlNtStatusToDosError(result);
|
||||
}
|
||||
} else {
|
||||
result = X_STATUS_TIMEOUT;
|
||||
}
|
||||
if (XSUCCEEDED(result) && length_ptr) {
|
||||
|
||||
if (result == X_STATUS_TIMEOUT) {
|
||||
return X_ERROR_IO_INCOMPLETE;
|
||||
}
|
||||
|
||||
if (XFAILED(result)) {
|
||||
return XThread::GetLastError();
|
||||
}
|
||||
|
||||
if (length_ptr) {
|
||||
*length_ptr = overlapped_ptr->length;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
DECLARE_XAM_EXPORT2(XamGetOverlappedResult, kNone, kImplemented, kSketchy);
|
||||
|
|
|
|||
Loading…
Reference in a new issue