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(
|
dword_result_t XamGetOverlappedResult_entry(
|
||||||
pointer_t<XAM_OVERLAPPED> overlapped_ptr, lpdword_t length_ptr,
|
pointer_t<XAM_OVERLAPPED> overlapped_ptr, lpdword_t length_ptr,
|
||||||
dword_t wait) {
|
dword_t wait) {
|
||||||
uint32_t result;
|
uint32_t result = X_STATUS_SUCCESS;
|
||||||
|
|
||||||
if (overlapped_ptr->result != X_ERROR_IO_PENDING) {
|
if (overlapped_ptr->result != X_ERROR_IO_PENDING) {
|
||||||
result = overlapped_ptr->result;
|
result = overlapped_ptr->result;
|
||||||
} else if (!overlapped_ptr->event) {
|
} else if (wait && overlapped_ptr->event) {
|
||||||
result = X_ERROR_IO_INCOMPLETE;
|
|
||||||
} else {
|
|
||||||
auto ev = kernel_state()->object_table()->LookupObject<XEvent>(
|
auto ev = kernel_state()->object_table()->LookupObject<XEvent>(
|
||||||
overlapped_ptr->event);
|
overlapped_ptr->event);
|
||||||
result = ev->Wait(3, 1, 0, nullptr);
|
result = ev->Wait(3, 1, 0, nullptr);
|
||||||
if (XSUCCEEDED(result)) {
|
|
||||||
result = overlapped_ptr->result;
|
|
||||||
} else {
|
} else {
|
||||||
result = xboxkrnl::xeRtlNtStatusToDosError(result);
|
result = X_STATUS_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (result == X_STATUS_TIMEOUT) {
|
||||||
|
return X_ERROR_IO_INCOMPLETE;
|
||||||
}
|
}
|
||||||
if (XSUCCEEDED(result) && length_ptr) {
|
|
||||||
|
if (XFAILED(result)) {
|
||||||
|
return XThread::GetLastError();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (length_ptr) {
|
||||||
*length_ptr = overlapped_ptr->length;
|
*length_ptr = overlapped_ptr->length;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
DECLARE_XAM_EXPORT2(XamGetOverlappedResult, kNone, kImplemented, kSketchy);
|
DECLARE_XAM_EXPORT2(XamGetOverlappedResult, kNone, kImplemented, kSketchy);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue