summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Hutchinson <chutchinson@dynics.com>2023-02-11 23:10:50 -0500
committerYuri Sizov <yuris@humnom.net>2023-03-30 19:28:57 +0200
commit4323c8b78ba03c8fef6dfc580c1aa1010ed3096d (patch)
tree1b8f65ae0f2cd380641097ffbb82333bb8638da9
parent1e948814845864ca5796d5ebddb985f509a33c8c (diff)
Replaced operating system alert dialog with a warning log message,
toggled by a project setting. Fixes #73141 (cherry picked from commit cb8e91924399948888d80d20c6112df473897183)
-rw-r--r--doc/classes/ProjectSettings.xml3
-rw-r--r--main/main.cpp1
-rw-r--r--modules/openxr/register_types.cpp18
3 files changed, 18 insertions, 4 deletions
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index da5f02aebb..120dda92c4 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -2431,6 +2431,9 @@
<member name="xr/openxr/reference_space" type="int" setter="" getter="" default="&quot;1&quot;">
Specify the default reference space.
</member>
+ <member name="xr/openxr/startup_alert" type="bool" setter="" getter="" default="true">
+ If [code]true[/code], Godot will display an alert modal when OpenXR initialization fails on startup.
+ </member>
<member name="xr/openxr/submit_depth_buffer" type="bool" setter="" getter="" default="false">
If [code]true[/code], OpenXR will manage the depth buffer and use the depth buffer for advanced reprojection provided this is supported by the XR runtime. Note that some rendering features in Godot can't be used with this feature.
</member>
diff --git a/main/main.cpp b/main/main.cpp
index 4ff83527e1..fbd0b75e58 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -1859,6 +1859,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
GLOBAL_DEF_BASIC(PropertyInfo(Variant::INT, "xr/openxr/reference_space", PROPERTY_HINT_ENUM, "Local,Stage"), "1");
GLOBAL_DEF_BASIC("xr/openxr/submit_depth_buffer", false);
+ GLOBAL_DEF_BASIC("xr/openxr/startup_alert", true);
#ifdef TOOLS_ENABLED
// Disabled for now, using XR inside of the editor we'll be working on during the coming months.
diff --git a/modules/openxr/register_types.cpp b/modules/openxr/register_types.cpp
index c39e49387a..b7d239fc73 100644
--- a/modules/openxr/register_types.cpp
+++ b/modules/openxr/register_types.cpp
@@ -29,6 +29,7 @@
/**************************************************************************/
#include "register_types.h"
+#include "core/config/project_settings.h"
#include "main/main.h"
#include "openxr_interface.h"
@@ -113,10 +114,19 @@ void initialize_openxr_module(ModuleInitializationLevel p_level) {
ERR_FAIL_NULL(openxr_api);
if (!openxr_api->initialize(Main::get_rendering_driver_name())) {
- OS::get_singleton()->alert("OpenXR was requested but failed to start.\n"
- "Please check if your HMD is connected.\n"
- "When using Windows MR please note that WMR only has DirectX support, make sure SteamVR is your default OpenXR runtime.\n"
- "Godot will start in normal mode.\n");
+ const char *init_error_message =
+ "OpenXR was requested but failed to start.\n"
+ "Please check if your HMD is connected.\n"
+ "When using Windows MR please note that WMR only has DirectX support, make sure SteamVR is your default OpenXR runtime.\n"
+ "Godot will start in normal mode.\n";
+
+ WARN_PRINT(init_error_message);
+
+ bool init_show_startup_alert = GLOBAL_GET("xr/openxr/startup_alert");
+ if (init_show_startup_alert) {
+ OS::get_singleton()->alert(init_error_message);
+ }
+
memdelete(openxr_api);
openxr_api = nullptr;
return;