Core: Protect each event from race conditions within it.
This commit is contained in:
parent
9cafb0d912
commit
38e4a144a1
|
@ -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)});
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Reference in New Issue