diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 42 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.h | 11 | ||||
| -rw-r--r-- | src/core/hle/kernel/object.cpp | 1 | ||||
| -rw-r--r-- | src/core/hle/kernel/object.h | 1 | ||||
| -rw-r--r-- | src/core/hle/kernel/timer.cpp | 84 | ||||
| -rw-r--r-- | src/core/hle/kernel/timer.h | 88 | ||||
| -rw-r--r-- | src/yuzu/debugger/wait_tree.cpp | 20 | ||||
| -rw-r--r-- | src/yuzu/debugger/wait_tree.h | 10 |
9 files changed, 0 insertions, 259 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 965c28787..f61bcd40d 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt | |||
| @@ -140,8 +140,6 @@ add_library(core STATIC | |||
| 140 | hle/kernel/svc_wrap.h | 140 | hle/kernel/svc_wrap.h |
| 141 | hle/kernel/thread.cpp | 141 | hle/kernel/thread.cpp |
| 142 | hle/kernel/thread.h | 142 | hle/kernel/thread.h |
| 143 | hle/kernel/timer.cpp | ||
| 144 | hle/kernel/timer.h | ||
| 145 | hle/kernel/vm_manager.cpp | 143 | hle/kernel/vm_manager.cpp |
| 146 | hle/kernel/vm_manager.h | 144 | hle/kernel/vm_manager.h |
| 147 | hle/kernel/wait_object.cpp | 145 | hle/kernel/wait_object.cpp |
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 67674cd47..7a524ce5a 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp | |||
| @@ -18,7 +18,6 @@ | |||
| 18 | #include "core/hle/kernel/process.h" | 18 | #include "core/hle/kernel/process.h" |
| 19 | #include "core/hle/kernel/resource_limit.h" | 19 | #include "core/hle/kernel/resource_limit.h" |
| 20 | #include "core/hle/kernel/thread.h" | 20 | #include "core/hle/kernel/thread.h" |
| 21 | #include "core/hle/kernel/timer.h" | ||
| 22 | #include "core/hle/lock.h" | 21 | #include "core/hle/lock.h" |
| 23 | #include "core/hle/result.h" | 22 | #include "core/hle/result.h" |
| 24 | 23 | ||
| @@ -86,27 +85,12 @@ static void ThreadWakeupCallback(u64 thread_handle, [[maybe_unused]] int cycles_ | |||
| 86 | } | 85 | } |
| 87 | } | 86 | } |
| 88 | 87 | ||
| 89 | /// The timer callback event, called when a timer is fired | ||
| 90 | static void TimerCallback(u64 timer_handle, int cycles_late) { | ||
| 91 | const auto proper_handle = static_cast<Handle>(timer_handle); | ||
| 92 | const auto& system = Core::System::GetInstance(); | ||
| 93 | SharedPtr<Timer> timer = system.Kernel().RetrieveTimerFromCallbackHandleTable(proper_handle); | ||
| 94 | |||
| 95 | if (timer == nullptr) { | ||
| 96 | LOG_CRITICAL(Kernel, "Callback fired for invalid timer {:016X}", timer_handle); | ||
| 97 | return; | ||
| 98 | } | ||
| 99 | |||
| 100 | timer->Signal(cycles_late); | ||
| 101 | } | ||
| 102 | |||
| 103 | struct KernelCore::Impl { | 88 | struct KernelCore::Impl { |
| 104 | void Initialize(KernelCore& kernel) { | 89 | void Initialize(KernelCore& kernel) { |
| 105 | Shutdown(); | 90 | Shutdown(); |
| 106 | 91 | ||
| 107 | InitializeSystemResourceLimit(kernel); | 92 | InitializeSystemResourceLimit(kernel); |
| 108 | InitializeThreads(); | 93 | InitializeThreads(); |
| 109 | InitializeTimers(); | ||
| 110 | } | 94 | } |
| 111 | 95 | ||
| 112 | void Shutdown() { | 96 | void Shutdown() { |
| @@ -122,9 +106,6 @@ struct KernelCore::Impl { | |||
| 122 | thread_wakeup_callback_handle_table.Clear(); | 106 | thread_wakeup_callback_handle_table.Clear(); |
| 123 | thread_wakeup_event_type = nullptr; | 107 | thread_wakeup_event_type = nullptr; |
| 124 | 108 | ||
| 125 | timer_callback_handle_table.Clear(); | ||
| 126 | timer_callback_event_type = nullptr; | ||
| 127 | |||
| 128 | named_ports.clear(); | 109 | named_ports.clear(); |
| 129 | } | 110 | } |
| 130 | 111 | ||
| @@ -146,11 +127,6 @@ struct KernelCore::Impl { | |||
| 146 | CoreTiming::RegisterEvent("ThreadWakeupCallback", ThreadWakeupCallback); | 127 | CoreTiming::RegisterEvent("ThreadWakeupCallback", ThreadWakeupCallback); |
| 147 | } | 128 | } |
| 148 | 129 | ||
| 149 | void InitializeTimers() { | ||
| 150 | timer_callback_handle_table.Clear(); | ||
| 151 | timer_callback_event_type = CoreTiming::RegisterEvent("TimerCallback", TimerCallback); | ||
| 152 | } | ||
| 153 | |||
| 154 | std::atomic<u32> next_object_id{0}; | 130 | std::atomic<u32> next_object_id{0}; |
| 155 | std::atomic<u64> next_process_id{Process::ProcessIDMin}; | 131 | std::atomic<u64> next_process_id{Process::ProcessIDMin}; |
| 156 | std::atomic<u64> next_thread_id{1}; | 132 | std::atomic<u64> next_thread_id{1}; |
| @@ -161,12 +137,6 @@ struct KernelCore::Impl { | |||
| 161 | 137 | ||
| 162 | SharedPtr<ResourceLimit> system_resource_limit; | 138 | SharedPtr<ResourceLimit> system_resource_limit; |
| 163 | 139 | ||
| 164 | /// The event type of the generic timer callback event | ||
| 165 | CoreTiming::EventType* timer_callback_event_type = nullptr; | ||
| 166 | // TODO(yuriks): This can be removed if Timer objects are explicitly pooled in the future, | ||
| 167 | // allowing us to simply use a pool index or similar. | ||
| 168 | Kernel::HandleTable timer_callback_handle_table; | ||
| 169 | |||
| 170 | CoreTiming::EventType* thread_wakeup_event_type = nullptr; | 140 | CoreTiming::EventType* thread_wakeup_event_type = nullptr; |
| 171 | // TODO(yuriks): This can be removed if Thread objects are explicitly pooled in the future, | 141 | // TODO(yuriks): This can be removed if Thread objects are explicitly pooled in the future, |
| 172 | // allowing us to simply use a pool index or similar. | 142 | // allowing us to simply use a pool index or similar. |
| @@ -198,10 +168,6 @@ SharedPtr<Thread> KernelCore::RetrieveThreadFromWakeupCallbackHandleTable(Handle | |||
| 198 | return impl->thread_wakeup_callback_handle_table.Get<Thread>(handle); | 168 | return impl->thread_wakeup_callback_handle_table.Get<Thread>(handle); |
| 199 | } | 169 | } |
| 200 | 170 | ||
| 201 | SharedPtr<Timer> KernelCore::RetrieveTimerFromCallbackHandleTable(Handle handle) const { | ||
| 202 | return impl->timer_callback_handle_table.Get<Timer>(handle); | ||
| 203 | } | ||
| 204 | |||
| 205 | void KernelCore::AppendNewProcess(SharedPtr<Process> process) { | 171 | void KernelCore::AppendNewProcess(SharedPtr<Process> process) { |
| 206 | impl->process_list.push_back(std::move(process)); | 172 | impl->process_list.push_back(std::move(process)); |
| 207 | } | 173 | } |
| @@ -247,18 +213,10 @@ u64 KernelCore::CreateNewProcessID() { | |||
| 247 | return impl->next_process_id++; | 213 | return impl->next_process_id++; |
| 248 | } | 214 | } |
| 249 | 215 | ||
| 250 | ResultVal<Handle> KernelCore::CreateTimerCallbackHandle(const SharedPtr<Timer>& timer) { | ||
| 251 | return impl->timer_callback_handle_table.Create(timer); | ||
| 252 | } | ||
| 253 | |||
| 254 | CoreTiming::EventType* KernelCore::ThreadWakeupCallbackEventType() const { | 216 | CoreTiming::EventType* KernelCore::ThreadWakeupCallbackEventType() const { |
| 255 | return impl->thread_wakeup_event_type; | 217 | return impl->thread_wakeup_event_type; |
| 256 | } | 218 | } |
| 257 | 219 | ||
| 258 | CoreTiming::EventType* KernelCore::TimerCallbackEventType() const { | ||
| 259 | return impl->timer_callback_event_type; | ||
| 260 | } | ||
| 261 | |||
| 262 | Kernel::HandleTable& KernelCore::ThreadWakeupCallbackHandleTable() { | 220 | Kernel::HandleTable& KernelCore::ThreadWakeupCallbackHandleTable() { |
| 263 | return impl->thread_wakeup_callback_handle_table; | 221 | return impl->thread_wakeup_callback_handle_table; |
| 264 | } | 222 | } |
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index 58c9d108b..c643a6401 100644 --- a/src/core/hle/kernel/kernel.h +++ b/src/core/hle/kernel/kernel.h | |||
| @@ -22,7 +22,6 @@ class HandleTable; | |||
| 22 | class Process; | 22 | class Process; |
| 23 | class ResourceLimit; | 23 | class ResourceLimit; |
| 24 | class Thread; | 24 | class Thread; |
| 25 | class Timer; | ||
| 26 | 25 | ||
| 27 | /// Represents a single instance of the kernel. | 26 | /// Represents a single instance of the kernel. |
| 28 | class KernelCore { | 27 | class KernelCore { |
| @@ -51,9 +50,6 @@ public: | |||
| 51 | /// Retrieves a shared pointer to a Thread instance within the thread wakeup handle table. | 50 | /// Retrieves a shared pointer to a Thread instance within the thread wakeup handle table. |
| 52 | SharedPtr<Thread> RetrieveThreadFromWakeupCallbackHandleTable(Handle handle) const; | 51 | SharedPtr<Thread> RetrieveThreadFromWakeupCallbackHandleTable(Handle handle) const; |
| 53 | 52 | ||
| 54 | /// Retrieves a shared pointer to a Timer instance within the timer callback handle table. | ||
| 55 | SharedPtr<Timer> RetrieveTimerFromCallbackHandleTable(Handle handle) const; | ||
| 56 | |||
| 57 | /// Adds the given shared pointer to an internal list of active processes. | 53 | /// Adds the given shared pointer to an internal list of active processes. |
| 58 | void AppendNewProcess(SharedPtr<Process> process); | 54 | void AppendNewProcess(SharedPtr<Process> process); |
| 59 | 55 | ||
| @@ -82,7 +78,6 @@ private: | |||
| 82 | friend class Object; | 78 | friend class Object; |
| 83 | friend class Process; | 79 | friend class Process; |
| 84 | friend class Thread; | 80 | friend class Thread; |
| 85 | friend class Timer; | ||
| 86 | 81 | ||
| 87 | /// Creates a new object ID, incrementing the internal object ID counter. | 82 | /// Creates a new object ID, incrementing the internal object ID counter. |
| 88 | u32 CreateNewObjectID(); | 83 | u32 CreateNewObjectID(); |
| @@ -93,15 +88,9 @@ private: | |||
| 93 | /// Creates a new thread ID, incrementing the internal thread ID counter. | 88 | /// Creates a new thread ID, incrementing the internal thread ID counter. |
| 94 | u64 CreateNewThreadID(); | 89 | u64 CreateNewThreadID(); |
| 95 | 90 | ||
| 96 | /// Creates a timer callback handle for the given timer. | ||
| 97 | ResultVal<Handle> CreateTimerCallbackHandle(const SharedPtr<Timer>& timer); | ||
| 98 | |||
| 99 | /// Retrieves the event type used for thread wakeup callbacks. | 91 | /// Retrieves the event type used for thread wakeup callbacks. |
| 100 | CoreTiming::EventType* ThreadWakeupCallbackEventType() const; | 92 | CoreTiming::EventType* ThreadWakeupCallbackEventType() const; |
| 101 | 93 | ||
| 102 | /// Retrieves the event type used for timer callbacks. | ||
| 103 | CoreTiming::EventType* TimerCallbackEventType() const; | ||
| 104 | |||
| 105 | /// Provides a reference to the thread wakeup callback handle table. | 94 | /// Provides a reference to the thread wakeup callback handle table. |
| 106 | Kernel::HandleTable& ThreadWakeupCallbackHandleTable(); | 95 | Kernel::HandleTable& ThreadWakeupCallbackHandleTable(); |
| 107 | 96 | ||
diff --git a/src/core/hle/kernel/object.cpp b/src/core/hle/kernel/object.cpp index 806078638..8870463d0 100644 --- a/src/core/hle/kernel/object.cpp +++ b/src/core/hle/kernel/object.cpp | |||
| @@ -16,7 +16,6 @@ bool Object::IsWaitable() const { | |||
| 16 | case HandleType::ReadableEvent: | 16 | case HandleType::ReadableEvent: |
| 17 | case HandleType::Thread: | 17 | case HandleType::Thread: |
| 18 | case HandleType::Process: | 18 | case HandleType::Process: |
| 19 | case HandleType::Timer: | ||
| 20 | case HandleType::ServerPort: | 19 | case HandleType::ServerPort: |
| 21 | case HandleType::ServerSession: | 20 | case HandleType::ServerSession: |
| 22 | return true; | 21 | return true; |
diff --git a/src/core/hle/kernel/object.h b/src/core/hle/kernel/object.h index 1541b6e3c..4c2505908 100644 --- a/src/core/hle/kernel/object.h +++ b/src/core/hle/kernel/object.h | |||
| @@ -25,7 +25,6 @@ enum class HandleType : u32 { | |||
| 25 | Thread, | 25 | Thread, |
| 26 | Process, | 26 | Process, |
| 27 | AddressArbiter, | 27 | AddressArbiter, |
| 28 | Timer, | ||
| 29 | ResourceLimit, | 28 | ResourceLimit, |
| 30 | ClientPort, | 29 | ClientPort, |
| 31 | ServerPort, | 30 | ServerPort, |
diff --git a/src/core/hle/kernel/timer.cpp b/src/core/hle/kernel/timer.cpp deleted file mode 100644 index 3afe60469..000000000 --- a/src/core/hle/kernel/timer.cpp +++ /dev/null | |||
| @@ -1,84 +0,0 @@ | |||
| 1 | // Copyright 2015 Citra Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "common/assert.h" | ||
| 6 | #include "common/logging/log.h" | ||
| 7 | #include "core/core.h" | ||
| 8 | #include "core/core_timing.h" | ||
| 9 | #include "core/core_timing_util.h" | ||
| 10 | #include "core/hle/kernel/handle_table.h" | ||
| 11 | #include "core/hle/kernel/kernel.h" | ||
| 12 | #include "core/hle/kernel/object.h" | ||
| 13 | #include "core/hle/kernel/thread.h" | ||
| 14 | #include "core/hle/kernel/timer.h" | ||
| 15 | |||
| 16 | namespace Kernel { | ||
| 17 | |||
| 18 | Timer::Timer(KernelCore& kernel) : WaitObject{kernel} {} | ||
| 19 | Timer::~Timer() = default; | ||
| 20 | |||
| 21 | SharedPtr<Timer> Timer::Create(KernelCore& kernel, ResetType reset_type, std::string name) { | ||
| 22 | SharedPtr<Timer> timer(new Timer(kernel)); | ||
| 23 | |||
| 24 | timer->reset_type = reset_type; | ||
| 25 | timer->signaled = false; | ||
| 26 | timer->name = std::move(name); | ||
| 27 | timer->initial_delay = 0; | ||
| 28 | timer->interval_delay = 0; | ||
| 29 | timer->callback_handle = kernel.CreateTimerCallbackHandle(timer).Unwrap(); | ||
| 30 | |||
| 31 | return timer; | ||
| 32 | } | ||
| 33 | |||
| 34 | bool Timer::ShouldWait(Thread* thread) const { | ||
| 35 | return !signaled; | ||
| 36 | } | ||
| 37 | |||
| 38 | void Timer::Acquire(Thread* thread) { | ||
| 39 | ASSERT_MSG(!ShouldWait(thread), "object unavailable!"); | ||
| 40 | |||
| 41 | if (reset_type == ResetType::OneShot) | ||
| 42 | signaled = false; | ||
| 43 | } | ||
| 44 | |||
| 45 | void Timer::Set(s64 initial, s64 interval) { | ||
| 46 | // Ensure we get rid of any previous scheduled event | ||
| 47 | Cancel(); | ||
| 48 | |||
| 49 | initial_delay = initial; | ||
| 50 | interval_delay = interval; | ||
| 51 | |||
| 52 | if (initial == 0) { | ||
| 53 | // Immediately invoke the callback | ||
| 54 | Signal(0); | ||
| 55 | } else { | ||
| 56 | CoreTiming::ScheduleEvent(CoreTiming::nsToCycles(initial), kernel.TimerCallbackEventType(), | ||
| 57 | callback_handle); | ||
| 58 | } | ||
| 59 | } | ||
| 60 | |||
| 61 | void Timer::Cancel() { | ||
| 62 | CoreTiming::UnscheduleEvent(kernel.TimerCallbackEventType(), callback_handle); | ||
| 63 | } | ||
| 64 | |||
| 65 | void Timer::Clear() { | ||
| 66 | signaled = false; | ||
| 67 | } | ||
| 68 | |||
| 69 | void Timer::Signal(int cycles_late) { | ||
| 70 | LOG_TRACE(Kernel, "Timer {} fired", GetObjectId()); | ||
| 71 | |||
| 72 | signaled = true; | ||
| 73 | |||
| 74 | // Resume all waiting threads | ||
| 75 | WakeupAllWaitingThreads(); | ||
| 76 | |||
| 77 | if (interval_delay != 0) { | ||
| 78 | // Reschedule the timer with the interval delay | ||
| 79 | CoreTiming::ScheduleEvent(CoreTiming::nsToCycles(interval_delay) - cycles_late, | ||
| 80 | kernel.TimerCallbackEventType(), callback_handle); | ||
| 81 | } | ||
| 82 | } | ||
| 83 | |||
| 84 | } // namespace Kernel | ||
diff --git a/src/core/hle/kernel/timer.h b/src/core/hle/kernel/timer.h deleted file mode 100644 index ce3e74426..000000000 --- a/src/core/hle/kernel/timer.h +++ /dev/null | |||
| @@ -1,88 +0,0 @@ | |||
| 1 | // Copyright 2015 Citra Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "common/common_types.h" | ||
| 8 | #include "core/hle/kernel/object.h" | ||
| 9 | #include "core/hle/kernel/wait_object.h" | ||
| 10 | |||
| 11 | namespace Kernel { | ||
| 12 | |||
| 13 | class KernelCore; | ||
| 14 | |||
| 15 | class Timer final : public WaitObject { | ||
| 16 | public: | ||
| 17 | /** | ||
| 18 | * Creates a timer | ||
| 19 | * @param kernel The kernel instance to create the timer callback handle for. | ||
| 20 | * @param reset_type ResetType describing how to create the timer | ||
| 21 | * @param name Optional name of timer | ||
| 22 | * @return The created Timer | ||
| 23 | */ | ||
| 24 | static SharedPtr<Timer> Create(KernelCore& kernel, ResetType reset_type, | ||
| 25 | std::string name = "Unknown"); | ||
| 26 | |||
| 27 | std::string GetTypeName() const override { | ||
| 28 | return "Timer"; | ||
| 29 | } | ||
| 30 | std::string GetName() const override { | ||
| 31 | return name; | ||
| 32 | } | ||
| 33 | |||
| 34 | static const HandleType HANDLE_TYPE = HandleType::Timer; | ||
| 35 | HandleType GetHandleType() const override { | ||
| 36 | return HANDLE_TYPE; | ||
| 37 | } | ||
| 38 | |||
| 39 | ResetType GetResetType() const { | ||
| 40 | return reset_type; | ||
| 41 | } | ||
| 42 | |||
| 43 | u64 GetInitialDelay() const { | ||
| 44 | return initial_delay; | ||
| 45 | } | ||
| 46 | |||
| 47 | u64 GetIntervalDelay() const { | ||
| 48 | return interval_delay; | ||
| 49 | } | ||
| 50 | |||
| 51 | bool ShouldWait(Thread* thread) const override; | ||
| 52 | void Acquire(Thread* thread) override; | ||
| 53 | |||
| 54 | /** | ||
| 55 | * Starts the timer, with the specified initial delay and interval. | ||
| 56 | * @param initial Delay until the timer is first fired | ||
| 57 | * @param interval Delay until the timer is fired after the first time | ||
| 58 | */ | ||
| 59 | void Set(s64 initial, s64 interval); | ||
| 60 | |||
| 61 | void Cancel(); | ||
| 62 | void Clear(); | ||
| 63 | |||
| 64 | /** | ||
| 65 | * Signals the timer, waking up any waiting threads and rescheduling it | ||
| 66 | * for the next interval. | ||
| 67 | * This method should not be called from outside the timer callback handler, | ||
| 68 | * lest multiple callback events get scheduled. | ||
| 69 | */ | ||
| 70 | void Signal(int cycles_late); | ||
| 71 | |||
| 72 | private: | ||
| 73 | explicit Timer(KernelCore& kernel); | ||
| 74 | ~Timer() override; | ||
| 75 | |||
| 76 | ResetType reset_type; ///< The ResetType of this timer | ||
| 77 | |||
| 78 | u64 initial_delay; ///< The delay until the timer fires for the first time | ||
| 79 | u64 interval_delay; ///< The delay until the timer fires after the first time | ||
| 80 | |||
| 81 | bool signaled; ///< Whether the timer has been signaled or not | ||
| 82 | std::string name; ///< Name of timer (optional) | ||
| 83 | |||
| 84 | /// Handle used as userdata to reference this object when inserting into the CoreTiming queue. | ||
| 85 | Handle callback_handle; | ||
| 86 | }; | ||
| 87 | |||
| 88 | } // namespace Kernel | ||
diff --git a/src/yuzu/debugger/wait_tree.cpp b/src/yuzu/debugger/wait_tree.cpp index 0c0864742..f50225d5f 100644 --- a/src/yuzu/debugger/wait_tree.cpp +++ b/src/yuzu/debugger/wait_tree.cpp | |||
| @@ -13,7 +13,6 @@ | |||
| 13 | #include "core/hle/kernel/readable_event.h" | 13 | #include "core/hle/kernel/readable_event.h" |
| 14 | #include "core/hle/kernel/scheduler.h" | 14 | #include "core/hle/kernel/scheduler.h" |
| 15 | #include "core/hle/kernel/thread.h" | 15 | #include "core/hle/kernel/thread.h" |
| 16 | #include "core/hle/kernel/timer.h" | ||
| 17 | #include "core/hle/kernel/wait_object.h" | 16 | #include "core/hle/kernel/wait_object.h" |
| 18 | #include "core/memory.h" | 17 | #include "core/memory.h" |
| 19 | 18 | ||
| @@ -155,8 +154,6 @@ std::unique_ptr<WaitTreeWaitObject> WaitTreeWaitObject::make(const Kernel::WaitO | |||
| 155 | switch (object.GetHandleType()) { | 154 | switch (object.GetHandleType()) { |
| 156 | case Kernel::HandleType::ReadableEvent: | 155 | case Kernel::HandleType::ReadableEvent: |
| 157 | return std::make_unique<WaitTreeEvent>(static_cast<const Kernel::ReadableEvent&>(object)); | 156 | return std::make_unique<WaitTreeEvent>(static_cast<const Kernel::ReadableEvent&>(object)); |
| 158 | case Kernel::HandleType::Timer: | ||
| 159 | return std::make_unique<WaitTreeTimer>(static_cast<const Kernel::Timer&>(object)); | ||
| 160 | case Kernel::HandleType::Thread: | 157 | case Kernel::HandleType::Thread: |
| 161 | return std::make_unique<WaitTreeThread>(static_cast<const Kernel::Thread&>(object)); | 158 | return std::make_unique<WaitTreeThread>(static_cast<const Kernel::Thread&>(object)); |
| 162 | default: | 159 | default: |
| @@ -348,23 +345,6 @@ std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeEvent::GetChildren() const { | |||
| 348 | return list; | 345 | return list; |
| 349 | } | 346 | } |
| 350 | 347 | ||
| 351 | WaitTreeTimer::WaitTreeTimer(const Kernel::Timer& object) : WaitTreeWaitObject(object) {} | ||
| 352 | WaitTreeTimer::~WaitTreeTimer() = default; | ||
| 353 | |||
| 354 | std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeTimer::GetChildren() const { | ||
| 355 | std::vector<std::unique_ptr<WaitTreeItem>> list(WaitTreeWaitObject::GetChildren()); | ||
| 356 | |||
| 357 | const auto& timer = static_cast<const Kernel::Timer&>(object); | ||
| 358 | |||
| 359 | list.push_back(std::make_unique<WaitTreeText>( | ||
| 360 | tr("reset type = %1").arg(GetResetTypeQString(timer.GetResetType())))); | ||
| 361 | list.push_back( | ||
| 362 | std::make_unique<WaitTreeText>(tr("initial delay = %1").arg(timer.GetInitialDelay()))); | ||
| 363 | list.push_back( | ||
| 364 | std::make_unique<WaitTreeText>(tr("interval delay = %1").arg(timer.GetIntervalDelay()))); | ||
| 365 | return list; | ||
| 366 | } | ||
| 367 | |||
| 368 | WaitTreeThreadList::WaitTreeThreadList(const std::vector<Kernel::SharedPtr<Kernel::Thread>>& list) | 348 | WaitTreeThreadList::WaitTreeThreadList(const std::vector<Kernel::SharedPtr<Kernel::Thread>>& list) |
| 369 | : thread_list(list) {} | 349 | : thread_list(list) {} |
| 370 | WaitTreeThreadList::~WaitTreeThreadList() = default; | 350 | WaitTreeThreadList::~WaitTreeThreadList() = default; |
diff --git a/src/yuzu/debugger/wait_tree.h b/src/yuzu/debugger/wait_tree.h index e639ef412..365c3dbfe 100644 --- a/src/yuzu/debugger/wait_tree.h +++ b/src/yuzu/debugger/wait_tree.h | |||
| @@ -20,7 +20,6 @@ namespace Kernel { | |||
| 20 | class ReadableEvent; | 20 | class ReadableEvent; |
| 21 | class WaitObject; | 21 | class WaitObject; |
| 22 | class Thread; | 22 | class Thread; |
| 23 | class Timer; | ||
| 24 | } // namespace Kernel | 23 | } // namespace Kernel |
| 25 | 24 | ||
| 26 | class WaitTreeThread; | 25 | class WaitTreeThread; |
| @@ -150,15 +149,6 @@ public: | |||
| 150 | std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; | 149 | std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; |
| 151 | }; | 150 | }; |
| 152 | 151 | ||
| 153 | class WaitTreeTimer : public WaitTreeWaitObject { | ||
| 154 | Q_OBJECT | ||
| 155 | public: | ||
| 156 | explicit WaitTreeTimer(const Kernel::Timer& object); | ||
| 157 | ~WaitTreeTimer() override; | ||
| 158 | |||
| 159 | std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; | ||
| 160 | }; | ||
| 161 | |||
| 162 | class WaitTreeThreadList : public WaitTreeExpandableItem { | 152 | class WaitTreeThreadList : public WaitTreeExpandableItem { |
| 163 | Q_OBJECT | 153 | Q_OBJECT |
| 164 | public: | 154 | public: |