1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-09 12:50:35 +00:00

Do not allow adding tasks while in the middle of flushing a message queue

This commit is contained in:
Juan Linietsky
2019-01-14 10:59:28 -03:00
parent c6b587636b
commit 4bb0080b3d
3 changed files with 18 additions and 0 deletions

View File

@@ -271,6 +271,8 @@ void MessageQueue::flush() {
//using reverse locking strategy
_THREAD_SAFE_LOCK_
flushing = true;
while (read_pos < buffer_end) {
//lock on each iteration, so a call can re-add itself to the message queue
@@ -327,13 +329,20 @@ void MessageQueue::flush() {
}
buffer_end = 0; // reset buffer
flushing = false;
_THREAD_SAFE_UNLOCK_
}
bool MessageQueue::is_flushing() const {
return flushing;
}
MessageQueue::MessageQueue() {
ERR_FAIL_COND(singleton != NULL);
singleton = this;
flushing = false;
buffer_end = 0;
buffer_max_used = 0;