1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-20 14:45:44 +00:00

Save project metadata less often

This commit is contained in:
kobewi
2025-10-26 21:41:00 +01:00
parent 0fdb93cde6
commit 2c14fc7d24
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(); EditorHelp::save_script_doc_cache();
editor_data.save_editor_external_data(); editor_data.save_editor_external_data();
EditorSettings::get_singleton()->save_project_metadata();
FileAccess::set_file_close_fail_notify_callback(nullptr); FileAccess::set_file_close_fail_notify_callback(nullptr);
log->deinit(); // Do not get messages anymore. log->deinit(); // Do not get messages anymore.
editor_data.clear_edited_scenes(); editor_data.clear_edited_scenes();
@@ -2118,6 +2119,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); EditorUndoRedoManager::get_singleton()->set_history_as_saved(EditorUndoRedoManager::GLOBAL_HISTORY);
_update_unsaved_cache(); _update_unsaved_cache();

View File

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

View File

@@ -91,6 +91,7 @@ private:
HashSet<String> changed_settings; HashSet<String> changed_settings;
mutable Ref<ConfigFile> project_metadata; mutable Ref<ConfigFile> project_metadata;
bool project_metadata_dirty = false;
HashMap<String, PropertyInfo> hints; HashMap<String, PropertyInfo> hints;
HashMap<String, VariantContainer> props; HashMap<String, VariantContainer> props;
int last_order; int last_order;
@@ -170,6 +171,7 @@ public:
void set_project_metadata(const String &p_section, const String &p_key, const Variant &p_data); 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; 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); void set_favorites(const Vector<String> &p_favorites);
Vector<String> get_favorites() const; Vector<String> get_favorites() const;