Skip to content

Commit 809e0c7

Browse files
committed
Merge pull request #112064 from KoBeWi/writadata
Save project metadata less often
2 parents 05d9587 + 2c14fc7 commit 809e0c7

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();
@@ -2278,6 +2279,7 @@ int EditorNode::_save_external_resources(bool p_also_save_external_data) {
22782279
}
22792280
}
22802281

2282+
EditorSettings::get_singleton()->save_project_metadata();
22812283
EditorUndoRedoManager::get_singleton()->set_history_as_saved(EditorUndoRedoManager::GLOBAL_HISTORY);
22822284
_update_unsaved_cache();
22832285

editor/settings/editor_settings.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1563,9 +1563,7 @@ void EditorSettings::set_project_metadata(const String &p_section, const String
15631563
}
15641564
}
15651565
project_metadata->set_value(p_section, p_key, p_data);
1566-
1567-
Error err = project_metadata->save(path);
1568-
ERR_FAIL_COND_MSG(err != OK, "Cannot save project metadata to file '" + path + "'.");
1566+
project_metadata_dirty = true;
15691567
}
15701568

15711569
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
15791577
return project_metadata->get_value(p_section, p_key, p_default);
15801578
}
15811579

1580+
void EditorSettings::save_project_metadata() {
1581+
if (!project_metadata_dirty) {
1582+
return;
1583+
}
1584+
const String path = _get_project_metadata_path();
1585+
Error err = project_metadata->save(path);
1586+
ERR_FAIL_COND_MSG(err != OK, "Cannot save project metadata to file '" + path + "'.");
1587+
project_metadata_dirty = false;
1588+
}
1589+
15821590
void EditorSettings::set_favorites(const Vector<String> &p_favorites) {
15831591
favorites = p_favorites;
15841592
String favorites_file;

editor/settings/editor_settings.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ class EditorSettings : public Resource {
9292
mutable String auto_language;
9393

9494
mutable Ref<ConfigFile> project_metadata;
95+
bool project_metadata_dirty = false;
9596
HashMap<String, PropertyInfo> hints;
9697
HashMap<String, VariantContainer> props;
9798
int last_order;
@@ -171,6 +172,7 @@ class EditorSettings : public Resource {
171172

172173
void set_project_metadata(const String &p_section, const String &p_key, const Variant &p_data);
173174
Variant get_project_metadata(const String &p_section, const String &p_key, const Variant &p_default) const;
175+
void save_project_metadata();
174176

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

0 commit comments

Comments
 (0)