Defer checking for rendering device support until the new project dialog is opened

This can save a lot of time opening the project manager and the information is only ever needed when creating a new project anyway
This commit is contained in:
clayjohn
2025-09-05 00:00:02 -07:00
parent a3b42d85d2
commit a86cd83593
2 changed files with 18 additions and 8 deletions

View File

@ -860,6 +860,23 @@ void ProjectDialog::show_dialog(bool p_reset_name) {
set_title(TTRC("Create New Project"));
set_ok_button_text(TTRC("Create"));
if (!rendering_device_checked) {
rendering_device_supported = DisplayServer::is_rendering_device_supported();
if (!rendering_device_supported) {
List<BaseButton *> buttons;
renderer_button_group->get_buttons(&buttons);
for (BaseButton *button : buttons) {
if (button->get_meta(SNAME("rendering_method")) == "gl_compatibility") {
button->set_pressed(true);
break;
}
}
}
_renderer_selected();
rendering_device_checked = true;
}
name_container->show();
install_path_container->hide();
renderer_container->show();
@ -1042,12 +1059,6 @@ ProjectDialog::ProjectDialog() {
default_renderer_type = EditorSettings::get_singleton()->get_setting("project_manager/default_renderer");
}
rendering_device_supported = DisplayServer::is_rendering_device_supported();
if (!rendering_device_supported) {
default_renderer_type = "gl_compatibility";
}
Button *rs_button = memnew(CheckBox);
rs_button->set_button_group(renderer_button_group);
rs_button->set_text(TTRC("Forward+"));
@ -1107,8 +1118,6 @@ ProjectDialog::ProjectDialog() {
rd_not_supported->set_visible(false);
renderer_container->add_child(rd_not_supported);
_renderer_selected();
l = memnew(Label);
l->set_focus_mode(Control::FOCUS_ACCESSIBILITY);
l->set_text(TTRC("The renderer can be changed later, but scenes may need to be adjusted."));

View File

@ -80,6 +80,7 @@ private:
HBoxContainer *default_files_container = nullptr;
Ref<ButtonGroup> renderer_button_group;
bool rendering_device_supported = false;
bool rendering_device_checked = false;
Label *rd_not_supported = nullptr;
Label *msg = nullptr;