From 9790b992bae76193c776c7cbbb6d51749a643249 Mon Sep 17 00:00:00 2001 From: "Wilson E. Alvarez" Date: Fri, 9 Feb 2024 07:47:13 -0500 Subject: [PATCH] Fix data race against EditorFileSystem.scanning_changes_done --- editor/editor_file_system.cpp | 8 ++++---- editor/editor_file_system.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp index 9fbe7ba6558..5021b814ea5 100644 --- a/editor/editor_file_system.cpp +++ b/editor/editor_file_system.cpp @@ -1183,7 +1183,7 @@ void EditorFileSystem::_thread_func_sources(void *_userdata) { sp.low = 0; efs->_scan_fs_changes(efs->filesystem, sp); } - efs->scanning_changes_done = true; + efs->scanning_changes_done.set(); } void EditorFileSystem::scan_changes() { @@ -1197,7 +1197,7 @@ void EditorFileSystem::scan_changes() { _update_extensions(); sources_changed.clear(); scanning_changes = true; - scanning_changes_done = false; + scanning_changes_done.clear(); if (!use_threads) { if (filesystem) { @@ -1216,7 +1216,7 @@ void EditorFileSystem::scan_changes() { } } scanning_changes = false; - scanning_changes_done = true; + scanning_changes_done.set(); emit_signal(SNAME("sources_changed"), sources_changed.size() > 0); } else { ERR_FAIL_COND(thread_sources.is_started()); @@ -1269,7 +1269,7 @@ void EditorFileSystem::_notification(int p_what) { bool done_importing = false; if (scanning_changes) { - if (scanning_changes_done) { + if (scanning_changes_done.is_set()) { set_process(false); if (thread_sources.is_started()) { diff --git a/editor/editor_file_system.h b/editor/editor_file_system.h index 2f5cd88a559..d099a6fedc0 100644 --- a/editor/editor_file_system.h +++ b/editor/editor_file_system.h @@ -231,7 +231,7 @@ class EditorFileSystem : public Node { Thread thread_sources; bool scanning_changes = false; - bool scanning_changes_done = false; + SafeFlag scanning_changes_done; static void _thread_func_sources(void *_userdata);