summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/svc.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2018-12-04 12:25:40 -0500
committerGravatar GitHub2018-12-04 12:25:40 -0500
commitd5337676233d2493eefd895901ef499fc49023d9 (patch)
treed1769fdd7a74f5a4abd4d4aa9d86d8493d1c4dc9 /src/core/hle/kernel/svc.cpp
parentRewrited TEX/TEXS (TEX Scalar). (#1826) (diff)
parentkernel/object: Amend handle types to distinguish between readable and writabl... (diff)
downloadyuzu-d5337676233d2493eefd895901ef499fc49023d9.tar.gz
yuzu-d5337676233d2493eefd895901ef499fc49023d9.tar.xz
yuzu-d5337676233d2493eefd895901ef499fc49023d9.zip
Merge pull request #1853 from lioncash/event
kernel/object: Amend handle types to distinguish between readable and writable events
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
-rw-r--r--src/core/hle/kernel/svc.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index b022a7bc5..812b32005 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -1602,14 +1602,21 @@ static ResultCode ClearEvent(Handle handle) {
1602 LOG_TRACE(Kernel_SVC, "called, event=0x{:08X}", handle); 1602 LOG_TRACE(Kernel_SVC, "called, event=0x{:08X}", handle);
1603 1603
1604 const auto& handle_table = Core::CurrentProcess()->GetHandleTable(); 1604 const auto& handle_table = Core::CurrentProcess()->GetHandleTable();
1605 SharedPtr<ReadableEvent> evt = handle_table.Get<ReadableEvent>(handle); 1605
1606 if (evt == nullptr) { 1606 auto writable_event = handle_table.Get<WritableEvent>(handle);
1607 LOG_ERROR(Kernel_SVC, "Event handle does not exist, handle=0x{:08X}", handle); 1607 if (writable_event) {
1608 return ERR_INVALID_HANDLE; 1608 writable_event->Clear();
1609 return RESULT_SUCCESS;
1609 } 1610 }
1610 1611
1611 evt->Clear(); 1612 auto readable_event = handle_table.Get<ReadableEvent>(handle);
1612 return RESULT_SUCCESS; 1613 if (readable_event) {
1614 readable_event->Clear();
1615 return RESULT_SUCCESS;
1616 }
1617
1618 LOG_ERROR(Kernel_SVC, "Event handle does not exist, handle=0x{:08X}", handle);
1619 return ERR_INVALID_HANDLE;
1613} 1620}
1614 1621
1615static ResultCode GetProcessInfo(u64* out, Handle process_handle, u32 type) { 1622static ResultCode GetProcessInfo(u64* out, Handle process_handle, u32 type) {