1
1
Fork 0
forked from suyu/suyu

Core: Protect each event from race conditions within it.

This commit is contained in:
Fernando Sahmkow 2021-11-28 13:47:40 +01:00
parent 9cafb0d912
commit 38e4a144a1
2 changed files with 2 additions and 0 deletions

View file

@ -226,6 +226,7 @@ std::optional<s64> CoreTiming::Advance() {
event_mutex.unlock(); event_mutex.unlock();
if (const auto event_type{evt.type.lock()}) { if (const auto event_type{evt.type.lock()}) {
std::unique_lock<std::mutex> lk(event_type->guard);
event_type->callback(evt.user_data, std::chrono::nanoseconds{static_cast<s64>( event_type->callback(evt.user_data, std::chrono::nanoseconds{static_cast<s64>(
GetGlobalTimeNs().count() - evt.time)}); GetGlobalTimeNs().count() - evt.time)});
} }

View file

@ -32,6 +32,7 @@ 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;
}; };
/** /**