diff options
author | Lioncash <mathew1800@gmail.com> | 2020-07-28 01:00:41 +0200 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2020-07-28 03:21:01 +0200 |
commit | a7af349daee85237384dba07533c9a407cf15592 (patch) | |
tree | e337a6e823960cc6b2a7d05c7e33e80cc51a4581 /src/core/core_timing.cpp | |
parent | Merge pull request #4419 from lioncash/initializer (diff) | |
download | yuzu-a7af349daee85237384dba07533c9a407cf15592.tar yuzu-a7af349daee85237384dba07533c9a407cf15592.tar.gz yuzu-a7af349daee85237384dba07533c9a407cf15592.tar.bz2 yuzu-a7af349daee85237384dba07533c9a407cf15592.tar.lz yuzu-a7af349daee85237384dba07533c9a407cf15592.tar.xz yuzu-a7af349daee85237384dba07533c9a407cf15592.tar.zst yuzu-a7af349daee85237384dba07533c9a407cf15592.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/core_timing.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/core/core_timing.cpp b/src/core/core_timing.cpp index b5feb3f24..71af26ec5 100644 --- a/src/core/core_timing.cpp +++ b/src/core/core_timing.cpp @@ -23,7 +23,7 @@ std::shared_ptr<EventType> CreateEvent(std::string name, TimedCallback&& callbac struct CoreTiming::Event { u64 time; u64 fifo_order; - u64 userdata; + std::uintptr_t user_data; std::weak_ptr<EventType> type; // Sort by time, unless the times are the same, in which case sort by @@ -58,7 +58,7 @@ void CoreTiming::Initialize(std::function<void()>&& on_thread_init_) { event_fifo_id = 0; shutting_down = false; ticks = 0; - const auto empty_timed_callback = [](u64, std::chrono::nanoseconds) {}; + const auto empty_timed_callback = [](std::uintptr_t, std::chrono::nanoseconds) {}; ev_lost = CreateEvent("_lost_event", empty_timed_callback); if (is_multicore) { timer_thread = std::make_unique<std::thread>(ThreadEntry, std::ref(*this)); @@ -107,22 +107,24 @@ bool CoreTiming::HasPendingEvents() const { } void CoreTiming::ScheduleEvent(std::chrono::nanoseconds ns_into_future, - const std::shared_ptr<EventType>& event_type, u64 userdata) { + const std::shared_ptr<EventType>& event_type, + std::uintptr_t user_data) { { std::scoped_lock scope{basic_lock}; const u64 timeout = static_cast<u64>((GetGlobalTimeNs() + ns_into_future).count()); - event_queue.emplace_back(Event{timeout, event_fifo_id++, userdata, event_type}); + event_queue.emplace_back(Event{timeout, event_fifo_id++, user_data, event_type}); std::push_heap(event_queue.begin(), event_queue.end(), std::greater<>()); } event.Set(); } -void CoreTiming::UnscheduleEvent(const std::shared_ptr<EventType>& event_type, u64 userdata) { +void CoreTiming::UnscheduleEvent(const std::shared_ptr<EventType>& event_type, + std::uintptr_t user_data) { std::scoped_lock scope{basic_lock}; const auto itr = std::remove_if(event_queue.begin(), event_queue.end(), [&](const Event& e) { - return e.type.lock().get() == event_type.get() && e.userdata == userdata; + return e.type.lock().get() == event_type.get() && e.user_data == user_data; }); // Removing random items breaks the invariant so we have to re-establish it. @@ -197,7 +199,7 @@ std::optional<s64> CoreTiming::Advance() { if (const auto event_type{evt.type.lock()}) { event_type->callback( - evt.userdata, std::chrono::nanoseconds{static_cast<s64>(global_timer - evt.time)}); + evt.user_data, std::chrono::nanoseconds{static_cast<s64>(global_timer - evt.time)}); } basic_lock.lock(); |