Skip to content

Commit 2c14fc7

Browse files
committed
Save project metadata less often
1 parent 0fdb93c commit 2c14fc7

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

editor/editor_node.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -900,6 +900,7 @@ void EditorNode::_notification(int p_what) {
900900
}
901901
EditorHelp::save_script_doc_cache();
902902
editor_data.save_editor_external_data();
903+
EditorSettings::get_singleton()->save_project_metadata();
903904
FileAccess::set_file_close_fail_notify_callback(nullptr);
904905
log->deinit(); // Do not get messages anymore.
905906
editor_data.clear_edited_scenes();
@@ -2118,6 +2119,7 @@ int EditorNode::_save_external_resources(bool p_also_save_external_data) {
21182119
}
21192120
}
21202121

2122+
EditorSettings::get_singleton()->save_project_metadata();
21212123
EditorUndoRedoManager::get_singleton()->set_history_as_saved(EditorUndoRedoManager::GLOBAL_HISTORY);
21222124
_update_unsaved_cache();
21232125

editor/settings/editor_settings.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1555,9 +1555,7 @@ void EditorSettings::set_project_metadata(const String &p_section, const String
15551555
}
15561556
}
15571557
project_metadata->set_value(p_section, p_key, p_data);
1558-
1559-
Error err = project_metadata->save(path);
1560-
ERR_FAIL_COND_MSG(err != OK, "Cannot save project metadata to file '" + path + "'.");
1558+
project_metadata_dirty = true;
15611559
}
15621560

15631561
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
15711569
return project_metadata->get_value(p_section, p_key, p_default);
15721570
}
15731571

1572+
void EditorSettings::save_project_metadata() {
1573+
if (!project_metadata_dirty) {
1574+
return;
1575+
}
1576+
const String path = _get_project_metadata_path();
1577+
Error err = project_metadata->save(path);
1578+
ERR_FAIL_COND_MSG(err != OK, "Cannot save project metadata to file '" + path + "'.");
1579+
project_metadata_dirty = false;
1580+
}
1581+
15741582
void EditorSettings::set_favorites(const Vector<String> &p_favorites) {
15751583
favorites = p_favorites;
15761584
String favorites_file;

editor/settings/editor_settings.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class EditorSettings : public Resource {
9191
HashSet<String> changed_settings;
9292

9393
mutable Ref<ConfigFile> project_metadata;
94+
bool project_metadata_dirty = false;
9495
HashMap<String, PropertyInfo> hints;
9596
HashMap<String, VariantContainer> props;
9697
int last_order;
@@ -170,6 +171,7 @@ class EditorSettings : public Resource {
170171

171172
void set_project_metadata(const String &p_section, const String &p_key, const Variant &p_data);
172173
Variant get_project_metadata(const String &p_section, const String &p_key, const Variant &p_default) const;
174+
void save_project_metadata();
173175

174176
void set_favorites(const Vector<String> &p_favorites);
175177
Vector<String> get_favorites() const;

0 commit comments

Comments
 (0)