@@ -298,7 +298,7 @@ bool ProjectSettings::_set(const StringName &p_name, const Variant &p_value) {
298298 }
299299
300300 _version++;
301- _queue_changed ();
301+ queue_changed ();
302302 return true ;
303303 }
304304
@@ -344,7 +344,7 @@ bool ProjectSettings::_set(const StringName &p_name, const Variant &p_value) {
344344 }
345345
346346 _version++;
347- _queue_changed ();
347+ queue_changed ();
348348 return true ;
349349}
350350
@@ -501,8 +501,8 @@ void ProjectSettings::_get_property_list(List<PropertyInfo> *p_list) const {
501501 }
502502}
503503
504- void ProjectSettings::_queue_changed () {
505- if (is_changed || !MessageQueue::get_singleton () || MessageQueue::get_singleton ()->get_max_buffer_usage () == 0 ) {
504+ void ProjectSettings::queue_changed () {
505+ if (block_changed || is_changed || !MessageQueue::get_singleton () || MessageQueue::get_singleton ()->get_max_buffer_usage () == 0 ) {
506506 return ;
507507 }
508508 is_changed = true ;
@@ -1119,7 +1119,9 @@ Error ProjectSettings::save_custom(const String &p_path, const CustomMap &p_cust
11191119 }
11201120 }
11211121 project_features = _trim_to_supported_features (project_features);
1122+ block_changed = true ;
11221123 set_setting (" application/config/features" , project_features);
1124+ block_changed = false ;
11231125#endif // TOOLS_ENABLED
11241126
11251127 RBSet<_VCSort> vclist;
@@ -1199,18 +1201,22 @@ Error ProjectSettings::save_custom(const String &p_path, const CustomMap &p_cust
11991201}
12001202
12011203Variant _GLOBAL_DEF (const String &p_var, const Variant &p_default, bool p_restart_if_changed, bool p_ignore_value_in_docs, bool p_basic, bool p_internal) {
1204+ ProjectSettings *ps = ProjectSettings::get_singleton ();
1205+
12021206 Variant ret;
1203- if (!ProjectSettings::get_singleton ()->has_setting (p_var)) {
1204- ProjectSettings::get_singleton ()->set (p_var, p_default);
1207+ if (!ps->has_setting (p_var)) {
1208+ ps->set_block_changed (true ); // Prevents emitting change during initialization.
1209+ ps->set (p_var, p_default);
1210+ ps->set_block_changed (false );
12051211 }
12061212 ret = GLOBAL_GET (p_var);
12071213
1208- ProjectSettings::get_singleton () ->set_initial_value (p_var, p_default);
1209- ProjectSettings::get_singleton () ->set_builtin_order (p_var);
1210- ProjectSettings::get_singleton () ->set_as_basic (p_var, p_basic);
1211- ProjectSettings::get_singleton () ->set_restart_if_changed (p_var, p_restart_if_changed);
1212- ProjectSettings::get_singleton () ->set_ignore_value_in_docs (p_var, p_ignore_value_in_docs);
1213- ProjectSettings::get_singleton () ->set_as_internal (p_var, p_internal);
1214+ ps ->set_initial_value (p_var, p_default);
1215+ ps ->set_builtin_order (p_var);
1216+ ps ->set_as_basic (p_var, p_basic);
1217+ ps ->set_restart_if_changed (p_var, p_restart_if_changed);
1218+ ps ->set_ignore_value_in_docs (p_var, p_ignore_value_in_docs);
1219+ ps ->set_as_internal (p_var, p_internal);
12141220 return ret;
12151221}
12161222
0 commit comments