summaryrefslogtreecommitdiffstats
path: root/platform/android/display_server_android.cpp
diff options
context:
space:
mode:
authorPedro J. Estébanez <pedrojrulez@gmail.com>2024-06-28 17:17:20 +0200
committerPedro J. Estébanez <pedrojrulez@gmail.com>2024-06-28 19:31:50 +0200
commit32d9c93af3e5ff999444eb8e52699110b0fe9afd (patch)
tree89f95ff9f1e6fd79c21047e489a0e0de12cfd6f4 /platform/android/display_server_android.cpp
parent811ce36c6090013f1a48676c0388892bf1621288 (diff)
downloadredot-engine-32d9c93af3e5ff999444eb8e52699110b0fe9afd.tar.gz
Improve handling of rendering startup errors
Diffstat (limited to 'platform/android/display_server_android.cpp')
-rw-r--r--platform/android/display_server_android.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/platform/android/display_server_android.cpp b/platform/android/display_server_android.cpp
index 288c37be29..06b304dcde 100644
--- a/platform/android/display_server_android.cpp
+++ b/platform/android/display_server_android.cpp
@@ -607,6 +607,7 @@ DisplayServerAndroid::DisplayServerAndroid(const String &p_rendering_driver, Dis
ERR_PRINT(vformat("Failed to initialize %s context", rendering_driver));
memdelete(rendering_context);
rendering_context = nullptr;
+ r_error = ERR_UNAVAILABLE;
return;
}
@@ -627,6 +628,7 @@ DisplayServerAndroid::DisplayServerAndroid(const String &p_rendering_driver, Dis
ERR_PRINT(vformat("Failed to create %s window.", rendering_driver));
memdelete(rendering_context);
rendering_context = nullptr;
+ r_error = ERR_UNAVAILABLE;
return;
}
@@ -635,7 +637,13 @@ DisplayServerAndroid::DisplayServerAndroid(const String &p_rendering_driver, Dis
rendering_context->window_set_vsync_mode(MAIN_WINDOW_ID, p_vsync_mode);
rendering_device = memnew(RenderingDevice);
- rendering_device->initialize(rendering_context, MAIN_WINDOW_ID);
+ if (rendering_device->initialize(rendering_context, MAIN_WINDOW_ID) != OK) {
+ rendering_device = nullptr;
+ memdelete(rendering_context);
+ rendering_context = nullptr;
+ r_error = ERR_UNAVAILABLE;
+ return;
+ }
rendering_device->screen_create(MAIN_WINDOW_ID);
RendererCompositorRD::make_current();