Skip to content

Commit ff21033

Browse files
committed
Fix intermittent crash during window resizing.
1 parent 4d12c90 commit ff21033

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

libgag/include/EventListener.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ class EventListener {
5454
static EventListener* el;
5555
std::atomic<bool> quit, done;
5656
std::atomic<int> depth;
57+
58+
static std::mutex queueMutex; // used when pushing/popping queue.
5759
};
5860
}
5961
#endif //__EVENTLISTENER_H

libgag/src/EventListener.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include <cassert>
2222
namespace GAGCore {
2323
std::deque<SDL_Event> events = std::deque<SDL_Event>();
24+
std::mutex EventListener::queueMutex;
2425
EventListener* EventListener::el = nullptr;
2526
std::mutex EventListener::startMutex;
2627
std::condition_variable EventListener::startedCond;
@@ -180,7 +181,10 @@ void EventListener::run()
180181
sizeMoveTimerRunning = false;
181182
}
182183
#endif
183-
events.push_back(event);
184+
{
185+
std::lock_guard<std::mutex> lock(queueMutex);
186+
events.push_back(event);
187+
}
184188
}
185189
}
186190
{
@@ -191,6 +195,7 @@ void EventListener::run()
191195
}
192196
int EventListener::poll(SDL_Event* e)
193197
{
198+
std::lock_guard<std::mutex> lock(queueMutex);
194199
if (events.size()) {
195200
*e = events.front();
196201
events.pop_front();

0 commit comments

Comments
 (0)