summaryrefslogtreecommitdiff
path: root/src/core/core_timing.cpp
diff options
context:
space:
mode:
authorGravatar Subv2018-08-12 17:47:15 -0500
committerGravatar Subv2018-08-12 18:40:56 -0500
commit0135b328edb1b58d1ff97cfdc35e05f02cec1c2a (patch)
treea06b72074fc7ef0ae0e69c9ecf83773adabb1308 /src/core/core_timing.cpp
parentMerge pull request #1029 from bunnei/fix-out-attrib (diff)
downloadyuzu-0135b328edb1b58d1ff97cfdc35e05f02cec1c2a.tar.gz
yuzu-0135b328edb1b58d1ff97cfdc35e05f02cec1c2a.tar.xz
yuzu-0135b328edb1b58d1ff97cfdc35e05f02cec1c2a.zip
Kernel/Thread: Always use the threadsafe option when scheduling wakeups.
WakeAfterDelay might be called from any host thread, so err on the side of caution and use the thread-safe CoreTiming::ScheduleEventThreadsafe. Note that CoreTiming is still far from thread-safe, there may be more things we have to work on for it to be up to par with what we want.
Diffstat (limited to 'src/core/core_timing.cpp')
-rw-r--r--src/core/core_timing.cpp2
1 files changed, 0 insertions, 2 deletions
diff --git a/src/core/core_timing.cpp b/src/core/core_timing.cpp
index d3bb6f818..f977d1b32 100644
--- a/src/core/core_timing.cpp
+++ b/src/core/core_timing.cpp
@@ -135,11 +135,9 @@ void ClearPendingEvents() {
135void ScheduleEvent(s64 cycles_into_future, const EventType* event_type, u64 userdata) { 135void ScheduleEvent(s64 cycles_into_future, const EventType* event_type, u64 userdata) {
136 ASSERT(event_type != nullptr); 136 ASSERT(event_type != nullptr);
137 s64 timeout = GetTicks() + cycles_into_future; 137 s64 timeout = GetTicks() + cycles_into_future;
138
139 // If this event needs to be scheduled before the next advance(), force one early 138 // If this event needs to be scheduled before the next advance(), force one early
140 if (!is_global_timer_sane) 139 if (!is_global_timer_sane)
141 ForceExceptionCheck(cycles_into_future); 140 ForceExceptionCheck(cycles_into_future);
142
143 event_queue.emplace_back(Event{timeout, event_fifo_id++, userdata, event_type}); 141 event_queue.emplace_back(Event{timeout, event_fifo_id++, userdata, event_type});
144 std::push_heap(event_queue.begin(), event_queue.end(), std::greater<>()); 142 std::push_heap(event_queue.begin(), event_queue.end(), std::greater<>());
145} 143}