aboutsummaryrefslogtreecommitdiff
path: root/src/core/core_timing.cpp
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2022-07-10 00:47:05 -0400
committerGitHub <noreply@github.com>2022-07-10 00:47:05 -0400
commitc765d5be0bf77af65b254db09997d47a9bddd46e (patch)
treeb5b0df7ce3ece41a4f1e661a725074ab3100f6ab /src/core/core_timing.cpp
parent313f047f974249c0fa004056ced3f18a8c61eae4 (diff)
parentd3cb9201f1d34dd804a90cfe1f17142e5f4fa3b7 (diff)
Merge pull request #8531 from FernandoS27/core-timing-fix-reg
Core timing: use only one thread.
Diffstat (limited to 'src/core/core_timing.cpp')
-rw-r--r--src/core/core_timing.cpp12
1 files changed, 2 insertions, 10 deletions
diff --git a/src/core/core_timing.cpp b/src/core/core_timing.cpp
index 1405780695..07b8e356b9 100644
--- a/src/core/core_timing.cpp
+++ b/src/core/core_timing.cpp
@@ -61,12 +61,7 @@ void CoreTiming::Initialize(std::function<void()>&& on_thread_init_) {
const auto empty_timed_callback = [](std::uintptr_t, std::chrono::nanoseconds) {};
ev_lost = CreateEvent("_lost_event", empty_timed_callback);
if (is_multicore) {
- const auto hardware_concurrency = std::thread::hardware_concurrency();
- size_t id = 0;
- worker_threads.emplace_back(ThreadEntry, std::ref(*this), id++);
- if (hardware_concurrency > 8) {
- worker_threads.emplace_back(ThreadEntry, std::ref(*this), id++);
- }
+ worker_threads.emplace_back(ThreadEntry, std::ref(*this), 0);
}
}
@@ -228,14 +223,11 @@ std::optional<s64> CoreTiming::Advance() {
event_queue.pop_back();
if (const auto event_type{evt.type.lock()}) {
- sequence_mutex.lock();
+
event_mutex.unlock();
- event_type->guard.lock();
- sequence_mutex.unlock();
const s64 delay = static_cast<s64>(GetGlobalTimeNs().count() - evt.time);
event_type->callback(evt.user_data, std::chrono::nanoseconds{delay});
- event_type->guard.unlock();
event_mutex.lock();
pending_events.fetch_sub(1, std::memory_order_relaxed);