From ec6b67d862a2606d6e9fe1036746605a6bfe5114 Mon Sep 17 00:00:00 2001
From: Liam <byteslice@airmail.cc>
Date: Mon, 13 Nov 2023 19:01:05 -0500
Subject: [PATCH] core_timing: lock event queue access

---
 src/core/core_timing.cpp | 2 ++
 src/core/core_timing.h   | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/core/core_timing.cpp b/src/core/core_timing.cpp
index e671b270f1..d6b5abc68e 100644
--- a/src/core/core_timing.cpp
+++ b/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());
 }
 
diff --git a/src/core/core_timing.h b/src/core/core_timing.h
index 26a8b93a76..21548f0a9b 100644
--- a/src/core/core_timing.h
+++ b/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{};