yuzu-emu
/
yuzu-android
Archived
1
0
Fork 0

Core timing: use only one thread.

This commit is contained in:
Fernando Sahmkow 2022-07-02 15:45:38 +02:00
parent 3f3c2dc20f
commit d3cb9201f1
2 changed files with 2 additions and 12 deletions

View File

@ -61,12 +61,7 @@ void CoreTiming::Initialize(std::function<void()>&& on_thread_init_) {
const auto empty_timed_callback = [](std::uintptr_t, std::chrono::nanoseconds) {}; const auto empty_timed_callback = [](std::uintptr_t, std::chrono::nanoseconds) {};
ev_lost = CreateEvent("_lost_event", empty_timed_callback); ev_lost = CreateEvent("_lost_event", empty_timed_callback);
if (is_multicore) { if (is_multicore) {
const auto hardware_concurrency = std::thread::hardware_concurrency(); worker_threads.emplace_back(ThreadEntry, std::ref(*this), 0);
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++);
}
} }
} }
@ -228,14 +223,11 @@ std::optional<s64> CoreTiming::Advance() {
event_queue.pop_back(); event_queue.pop_back();
if (const auto event_type{evt.type.lock()}) { if (const auto event_type{evt.type.lock()}) {
sequence_mutex.lock();
event_mutex.unlock(); event_mutex.unlock();
event_type->guard.lock();
sequence_mutex.unlock();
const s64 delay = static_cast<s64>(GetGlobalTimeNs().count() - evt.time); const s64 delay = static_cast<s64>(GetGlobalTimeNs().count() - evt.time);
event_type->callback(evt.user_data, std::chrono::nanoseconds{delay}); event_type->callback(evt.user_data, std::chrono::nanoseconds{delay});
event_type->guard.unlock();
event_mutex.lock(); event_mutex.lock();
pending_events.fetch_sub(1, std::memory_order_relaxed); pending_events.fetch_sub(1, std::memory_order_relaxed);

View File

@ -32,7 +32,6 @@ struct EventType {
TimedCallback callback; TimedCallback callback;
/// A pointer to the name of the event. /// A pointer to the name of the event.
const std::string name; const std::string name;
mutable std::mutex guard;
}; };
/** /**
@ -157,7 +156,6 @@ private:
std::condition_variable wait_pause_cv; std::condition_variable wait_pause_cv;
std::condition_variable wait_signal_cv; std::condition_variable wait_signal_cv;
mutable std::mutex event_mutex; mutable std::mutex event_mutex;
mutable std::mutex sequence_mutex;
std::atomic<bool> paused_state{}; std::atomic<bool> paused_state{};
bool is_paused{}; bool is_paused{};