diff options
| author | 2018-12-06 13:42:46 -0500 | |
|---|---|---|
| committer | 2018-12-06 13:42:46 -0500 | |
| commit | 8de6403a080bf2f95e80c1b59e0afd2d133d924b (patch) | |
| tree | 71004abe8be26a7ebd6a5806089e96ded2f9525e /src/core/hle/kernel/svc.cpp | |
| parent | Merge pull request #1824 from ReinUsesLisp/fbcache (diff) | |
| parent | kernel/svc: Correct behavior of svcResetSignal() (diff) | |
| download | yuzu-8de6403a080bf2f95e80c1b59e0afd2d133d924b.tar.gz yuzu-8de6403a080bf2f95e80c1b59e0afd2d133d924b.tar.xz yuzu-8de6403a080bf2f95e80c1b59e0afd2d133d924b.zip | |
Merge pull request #1861 from lioncash/reset
kernel/svc: Correct behavior of svcResetSignal()
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index e6c77f9db..84df2040e 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -1433,17 +1433,24 @@ static ResultCode CloseHandle(Handle handle) { | |||
| 1433 | return handle_table.Close(handle); | 1433 | return handle_table.Close(handle); |
| 1434 | } | 1434 | } |
| 1435 | 1435 | ||
| 1436 | /// Reset an event | 1436 | /// Clears the signaled state of an event or process. |
| 1437 | static ResultCode ResetSignal(Handle handle) { | 1437 | static ResultCode ResetSignal(Handle handle) { |
| 1438 | LOG_DEBUG(Kernel_SVC, "called handle 0x{:08X}", handle); | 1438 | LOG_DEBUG(Kernel_SVC, "called handle 0x{:08X}", handle); |
| 1439 | 1439 | ||
| 1440 | const auto& handle_table = Core::CurrentProcess()->GetHandleTable(); | 1440 | const auto& handle_table = Core::CurrentProcess()->GetHandleTable(); |
| 1441 | |||
| 1441 | auto event = handle_table.Get<ReadableEvent>(handle); | 1442 | auto event = handle_table.Get<ReadableEvent>(handle); |
| 1443 | if (event) { | ||
| 1444 | return event->Reset(); | ||
| 1445 | } | ||
| 1442 | 1446 | ||
| 1443 | ASSERT(event != nullptr); | 1447 | auto process = handle_table.Get<Process>(handle); |
| 1448 | if (process) { | ||
| 1449 | return process->ClearSignalState(); | ||
| 1450 | } | ||
| 1444 | 1451 | ||
| 1445 | event->Clear(); | 1452 | LOG_ERROR(Kernel_SVC, "Invalid handle (0x{:08X})", handle); |
| 1446 | return RESULT_SUCCESS; | 1453 | return ERR_INVALID_HANDLE; |
| 1447 | } | 1454 | } |
| 1448 | 1455 | ||
| 1449 | /// Creates a TransferMemory object | 1456 | /// Creates a TransferMemory object |