Merge pull request #112064 from KoBeWi/writadata

Save project metadata less often
This commit is contained in:
Thaddeus Crews
2025-11-04 16:32:46 -06:00
3 changed files with 15 additions and 3 deletions

View File

@ -900,6 +900,7 @@ void EditorNode::_notification(int p_what) {
}
EditorHelp::save_script_doc_cache();
editor_data.save_editor_external_data();
EditorSettings::get_singleton()->save_project_metadata();
FileAccess::set_file_close_fail_notify_callback(nullptr);
log->deinit(); // Do not get messages anymore.
editor_data.clear_edited_scenes();
@ -2278,6 +2279,7 @@ int EditorNode::_save_external_resources(bool p_also_save_external_data) {
}
}
EditorSettings::get_singleton()->save_project_metadata();
EditorUndoRedoManager::get_singleton()->set_history_as_saved(EditorUndoRedoManager::GLOBAL_HISTORY);
_update_unsaved_cache();

View File

@ -1563,9 +1563,7 @@ void EditorSettings::set_project_metadata(const String &p_section, const String
}
}
project_metadata->set_value(p_section, p_key, p_data);
Error err = project_metadata->save(path);
ERR_FAIL_COND_MSG(err != OK, "Cannot save project metadata to file '" + path + "'.");
project_metadata_dirty = true;
}
Variant EditorSettings::get_project_metadata(const String &p_section, const String &p_key, const Variant &p_default) const {
@ -1579,6 +1577,16 @@ Variant EditorSettings::get_project_metadata(const String &p_section, const Stri
return project_metadata->get_value(p_section, p_key, p_default);
}
void EditorSettings::save_project_metadata() {
if (!project_metadata_dirty) {
return;
}
const String path = _get_project_metadata_path();
Error err = project_metadata->save(path);
ERR_FAIL_COND_MSG(err != OK, "Cannot save project metadata to file '" + path + "'.");
project_metadata_dirty = false;
}
void EditorSettings::set_favorites(const Vector<String> &p_favorites) {
favorites = p_favorites;
String favorites_file;

View File

@ -92,6 +92,7 @@ private:
mutable String auto_language;
mutable Ref<ConfigFile> project_metadata;
bool project_metadata_dirty = false;
HashMap<String, PropertyInfo> hints;
HashMap<String, VariantContainer> props;
int last_order;
@ -171,6 +172,7 @@ public:
void set_project_metadata(const String &p_section, const String &p_key, const Variant &p_data);
Variant get_project_metadata(const String &p_section, const String &p_key, const Variant &p_default) const;
void save_project_metadata();
void set_favorites(const Vector<String> &p_favorites);
Vector<String> get_favorites() const;