Răsfoiți Sursa

core_timing: lock event queue access

Liam 2 ani în urmă
părinte
comite
ec6b67d862
2 a modificat fișierele cu 3 adăugiri și 1 ștergeri
  1. 2 0
      src/core/core_timing.cpp
  2. 1 1
      src/core/core_timing.h

+ 2 - 0
src/core/core_timing.cpp

@@ -76,6 +76,7 @@ void CoreTiming::Initialize(std::function<void()>&& on_thread_init_) {
 }
 
 void CoreTiming::ClearPendingEvents() {
+    std::scoped_lock lock{basic_lock};
     event_queue.clear();
 }
 
@@ -113,6 +114,7 @@ bool CoreTiming::IsRunning() const {
 }
 
 bool CoreTiming::HasPendingEvents() const {
+    std::scoped_lock lock{basic_lock};
     return !(wait_set && event_queue.empty());
 }
 

+ 1 - 1
src/core/core_timing.h

@@ -161,7 +161,7 @@ private:
     std::shared_ptr<EventType> ev_lost;
     Common::Event event{};
     Common::Event pause_event{};
-    std::mutex basic_lock;
+    mutable std::mutex basic_lock;
     std::mutex advance_lock;
     std::unique_ptr<std::jthread> timer_thread;
     std::atomic<bool> paused{};