Skip to content

Commit 33141c9

Browse files
committed
Merge pull request godotengine#79785 from KoBeWi/ioioioio
Load project metadata file only when needed
2 parents 95df862 + f6c85b1 commit 33141c9

2 files changed

Lines changed: 27 additions & 14 deletions

File tree

editor/editor_settings.cpp

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -884,6 +884,10 @@ bool EditorSettings::_is_default_text_editor_theme(String p_theme_name) {
884884
return p_theme_name == "default" || p_theme_name == "godot 2" || p_theme_name == "custom";
885885
}
886886

887+
const String EditorSettings::_get_project_metadata_path() const {
888+
return EditorPaths::get_singleton()->get_project_settings_dir().path_join("project_metadata.cfg");
889+
}
890+
887891
// PUBLIC METHODS
888892

889893
EditorSettings *EditorSettings::get_singleton() {
@@ -1171,24 +1175,31 @@ void EditorSettings::add_property_hint(const PropertyInfo &p_hint) {
11711175
// Metadata
11721176

11731177
void EditorSettings::set_project_metadata(const String &p_section, const String &p_key, Variant p_data) {
1174-
Ref<ConfigFile> cf = memnew(ConfigFile);
1175-
String path = EditorPaths::get_singleton()->get_project_settings_dir().path_join("project_metadata.cfg");
1176-
Error err;
1177-
err = cf->load(path);
1178-
ERR_FAIL_COND_MSG(err != OK && err != ERR_FILE_NOT_FOUND, "Cannot load editor settings from file '" + path + "'.");
1179-
cf->set_value(p_section, p_key, p_data);
1180-
err = cf->save(path);
1181-
ERR_FAIL_COND_MSG(err != OK, "Cannot save editor settings to file '" + path + "'.");
1178+
const String path = _get_project_metadata_path();
1179+
1180+
if (project_metadata.is_null()) {
1181+
project_metadata.instantiate();
1182+
1183+
Error err = project_metadata->load(path);
1184+
if (err != OK && err != ERR_FILE_NOT_FOUND) {
1185+
ERR_PRINT("Cannot load project metadata from file '" + path + "'.");
1186+
}
1187+
}
1188+
project_metadata->set_value(p_section, p_key, p_data);
1189+
1190+
Error err = project_metadata->save(path);
1191+
ERR_FAIL_COND_MSG(err != OK, "Cannot save project metadata to file '" + path + "'.");
11821192
}
11831193

11841194
Variant EditorSettings::get_project_metadata(const String &p_section, const String &p_key, Variant p_default) const {
1185-
Ref<ConfigFile> cf = memnew(ConfigFile);
1186-
String path = EditorPaths::get_singleton()->get_project_settings_dir().path_join("project_metadata.cfg");
1187-
Error err = cf->load(path);
1188-
if (err != OK) {
1189-
return p_default;
1195+
if (project_metadata.is_null()) {
1196+
project_metadata.instantiate();
1197+
1198+
const String path = _get_project_metadata_path();
1199+
Error err = project_metadata->load(path);
1200+
ERR_FAIL_COND_V_MSG(err != OK && err != ERR_FILE_NOT_FOUND, p_default, "Cannot load project metadata from file '" + path + "'.");
11901201
}
1191-
return cf->get_value(p_section, p_key, p_default);
1202+
return project_metadata->get_value(p_section, p_key, p_default);
11921203
}
11931204

11941205
void EditorSettings::set_favorites(const Vector<String> &p_favorites) {

editor/editor_settings.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ class EditorSettings : public Resource {
7979

8080
HashSet<String> changed_settings;
8181

82+
mutable Ref<ConfigFile> project_metadata;
8283
HashMap<String, PropertyInfo> hints;
8384
HashMap<String, VariantContainer> props;
8485
int last_order;
@@ -106,6 +107,7 @@ class EditorSettings : public Resource {
106107
void _load_godot2_text_editor_theme();
107108
bool _save_text_editor_theme(String p_file);
108109
bool _is_default_text_editor_theme(String p_theme_name);
110+
const String _get_project_metadata_path() const;
109111

110112
protected:
111113
static void _bind_methods();

0 commit comments

Comments
 (0)