From e2a91309d060f9e454253a2aac9dd40b1441a7ca Mon Sep 17 00:00:00 2001 From: Ninni Pipping Date: Mon, 31 Jul 2023 14:34:09 +0200 Subject: [PATCH] Fix API hash related crash in `EditorSettings` --- editor/doc_tools.cpp | 2 ++ editor/editor_node.cpp | 1 - editor/editor_settings.cpp | 9 --------- editor/editor_settings.h | 1 - editor/register_editor_types.cpp | 2 +- 5 files changed, 3 insertions(+), 12 deletions(-) diff --git a/editor/doc_tools.cpp b/editor/doc_tools.cpp index 7929c4b0ca4..e0b344fc193 100644 --- a/editor/doc_tools.cpp +++ b/editor/doc_tools.cpp @@ -481,6 +481,8 @@ void DocTools::generate(bool p_basic_types) { default_value_valid = true; } } + } else if (name == "EditorSettings") { + // Special case for editor settings, to prevent hardware or OS specific settings to affect the result. } else if (import_option) { default_value = import_options_default[E.name]; default_value_valid = true; diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index a8187c27b6e..6ed2fb0d89d 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -6822,7 +6822,6 @@ EditorNode::EditorNode() { // No scripting by default if in editor. ScriptServer::set_scripting_enabled(false); - EditorSettings::ensure_class_registered(); EditorHelp::generate_doc(); SceneState::set_disable_placeholders(true); ResourceLoader::clear_translation_remaps(); // Using no remaps if in editor. diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 285be7e7ae0..5a490fcfc01 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -878,13 +878,6 @@ EditorSettings *EditorSettings::get_singleton() { return singleton.ptr(); } -void EditorSettings::ensure_class_registered() { - ClassDB::APIType prev_api = ClassDB::get_current_api(); - ClassDB::set_current_api(ClassDB::API_EDITOR); - GDREGISTER_CLASS(EditorSettings); // Otherwise it can't be unserialized. - ClassDB::set_current_api(prev_api); -} - void EditorSettings::create() { // IMPORTANT: create() *must* create a valid EditorSettings singleton, // as the rest of the engine code will assume it. As such, it should never @@ -895,8 +888,6 @@ void EditorSettings::create() { return; } - ensure_class_registered(); - String config_file_path; Ref extra_config = memnew(ConfigFile); diff --git a/editor/editor_settings.h b/editor/editor_settings.h index 55ac6c5a15f..660a9501a27 100644 --- a/editor/editor_settings.h +++ b/editor/editor_settings.h @@ -117,7 +117,6 @@ public: static EditorSettings *get_singleton(); - static void ensure_class_registered(); static void create(); void setup_language(); void setup_network(); diff --git a/editor/register_editor_types.cpp b/editor/register_editor_types.cpp index 636bb01557c..fbb724906b2 100644 --- a/editor/register_editor_types.cpp +++ b/editor/register_editor_types.cpp @@ -140,7 +140,7 @@ void register_editor_types() { GDREGISTER_CLASS(EditorScript); GDREGISTER_CLASS(EditorSelection); GDREGISTER_CLASS(EditorFileDialog); - GDREGISTER_ABSTRACT_CLASS(EditorSettings); + GDREGISTER_CLASS(EditorSettings); GDREGISTER_CLASS(EditorNode3DGizmo); GDREGISTER_CLASS(EditorNode3DGizmoPlugin); GDREGISTER_ABSTRACT_CLASS(EditorResourcePreview);