Emit filesystem_changed only once per frame

This commit is contained in:
Nazarii 2024-10-27 18:17:46 +02:00
parent 61accf0605
commit 01d1f10845
2 changed files with 11 additions and 1 deletions

View File

@ -2376,10 +2376,18 @@ void EditorFileSystem::update_files(const Vector<String> &p_script_paths) {
if (!is_scanning()) {
_process_update_pending();
}
call_deferred(SNAME("emit_signal"), "filesystem_changed"); // Update later
if (!filesystem_changed_queued) {
filesystem_changed_queued = true;
callable_mp(this, &EditorFileSystem::_notify_filesystem_changed).call_deferred();
}
}
}
void EditorFileSystem::_notify_filesystem_changed() {
emit_signal("filesystem_changed");
filesystem_changed_queued = false;
}
HashSet<String> EditorFileSystem::get_valid_extensions() const {
return valid_extensions;
}

View File

@ -180,6 +180,7 @@ class EditorFileSystem : public Node {
EditorFileSystemDirectory *new_filesystem = nullptr;
ScannedDirectory *first_scan_root_dir = nullptr;
bool filesystem_changed_queued = false;
bool scanning = false;
bool importing = false;
bool first_scan = true;
@ -189,6 +190,7 @@ class EditorFileSystem : public Node {
bool revalidate_import_files = false;
int nb_files_total = 0;
void _notify_filesystem_changed();
void _scan_filesystem();
void _first_scan_filesystem();
void _first_scan_process_scripts(const ScannedDirectory *p_scan_dir, List<String> &p_gdextension_extensions, HashSet<String> &p_existing_class_names, HashSet<String> &p_extensions);