From 2a3f8e8484fca54767c9874cc21f5985d2be1463 Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 8 Jan 2018 11:35:03 -0500 Subject: Kernel: Allow chaining WaitSynchronization calls inside a wakeup callback. --- src/core/hle/kernel/thread.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/core/hle/kernel/thread.h') diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index ed44ee933..19ba6e0af 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h @@ -128,6 +128,9 @@ public: */ void WakeAfterDelay(s64 nanoseconds); + /// Cancel any outstanding wakeup events for this thread + void CancelWakeupTimer(); + /** * Sets the result after the thread awakens (from either WaitSynchronization SVC) * @param result Value to set to the returned result @@ -218,8 +221,8 @@ public: /// Handle used as userdata to reference this object when inserting into the CoreTiming queue. Handle callback_handle; - using WakeupCallback = void(ThreadWakeupReason reason, SharedPtr thread, - SharedPtr object); + using WakeupCallback = bool(ThreadWakeupReason reason, SharedPtr thread, + SharedPtr object, size_t index); // Callback that will be invoked when the thread is resumed from a waiting state. If the thread // was waiting via WaitSynchronizationN then the object will be the last object that became // available. In case of a timeout, the object will be nullptr. @@ -237,7 +240,8 @@ private: * @param owner_process The parent process for the main thread * @return A shared pointer to the main thread */ -SharedPtr SetupMainThread(VAddr entry_point, u32 priority, SharedPtr owner_process); +SharedPtr SetupMainThread(VAddr entry_point, u32 priority, + SharedPtr owner_process); /** * Returns whether there are any threads that are ready to run. -- cgit v1.2.3