From 2677af779415fac6ddca13025ce63418657f6107 Mon Sep 17 00:00:00 2001 From: Riteo Date: Wed, 7 Feb 2024 14:11:19 +0100 Subject: [PATCH] Handle display driver preferences consistently between editor and projects The way that it was implemented before allowed for the project property to spill over to the editor if the `prefer_wayland` property is not present which, while not completely likely, is still a possibility. This specific part is thus more of a correctness change, ensuring that we always enforce the default display server when not running a project. This commit also removes the restart requirement for the relative display driver project settings as they're independent and a restart would do nothing useful. --- main/main.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/main/main.cpp b/main/main.cpp index bc2a6107b55..b9baa3c5c38 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -2209,12 +2209,12 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph // Make sure that headless is the last one, which it is assumed to be by design. DEV_ASSERT(NULL_DISPLAY_DRIVER == DisplayServer::get_create_function_name(DisplayServer::get_create_function_count() - 1)); - GLOBAL_DEF_RST_NOVAL("display/display_server/driver", "default"); - GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "display/display_server/driver.windows", PROPERTY_HINT_ENUM_SUGGESTION, "default,windows,headless"), "default"); - GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "display/display_server/driver.linuxbsd", PROPERTY_HINT_ENUM_SUGGESTION, "default,x11,wayland,headless"), "default"); - GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "display/display_server/driver.android", PROPERTY_HINT_ENUM_SUGGESTION, "default,android,headless"), "default"); - GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "display/display_server/driver.ios", PROPERTY_HINT_ENUM_SUGGESTION, "default,iOS,headless"), "default"); - GLOBAL_DEF_RST_NOVAL(PropertyInfo(Variant::STRING, "display/display_server/driver.macos", PROPERTY_HINT_ENUM_SUGGESTION, "default,macos,headless"), "default"); + GLOBAL_DEF_NOVAL("display/display_server/driver", "default"); + GLOBAL_DEF_NOVAL(PropertyInfo(Variant::STRING, "display/display_server/driver.windows", PROPERTY_HINT_ENUM_SUGGESTION, "default,windows,headless"), "default"); + GLOBAL_DEF_NOVAL(PropertyInfo(Variant::STRING, "display/display_server/driver.linuxbsd", PROPERTY_HINT_ENUM_SUGGESTION, "default,x11,wayland,headless"), "default"); + GLOBAL_DEF_NOVAL(PropertyInfo(Variant::STRING, "display/display_server/driver.android", PROPERTY_HINT_ENUM_SUGGESTION, "default,android,headless"), "default"); + GLOBAL_DEF_NOVAL(PropertyInfo(Variant::STRING, "display/display_server/driver.ios", PROPERTY_HINT_ENUM_SUGGESTION, "default,iOS,headless"), "default"); + GLOBAL_DEF_NOVAL(PropertyInfo(Variant::STRING, "display/display_server/driver.macos", PROPERTY_HINT_ENUM_SUGGESTION, "default,macos,headless"), "default"); GLOBAL_DEF_RST_NOVAL("audio/driver/driver", AudioDriverManager::get_driver(0)->get_name()); if (audio_driver.is_empty()) { // Specified in project.godot. @@ -2462,6 +2462,7 @@ Error Main::setup2() { String screen_property; bool prefer_wayland_found = false; + bool prefer_wayland = false; if (editor) { screen_property = "interface/editor/editor_screen"; @@ -2494,16 +2495,17 @@ Error Main::setup2() { } if (!prefer_wayland_found && assign == "run/platforms/linuxbsd/prefer_wayland") { - if (value) { - display_driver = "wayland"; - } else { - display_driver = "default"; - } - + prefer_wayland = value; prefer_wayland_found = true; } } } + + if (prefer_wayland) { + display_driver = "wayland"; + } else { + display_driver = "default"; + } } } }