summaryrefslogtreecommitdiffstats
path: root/servers
diff options
context:
space:
mode:
authorDario <dariosamo@gmail.com>2024-02-13 14:19:26 -0300
committerDario <dariosamo@gmail.com>2024-02-13 14:19:26 -0300
commitfc8ec5d8a9b5b49dfafe832f09d81042fb382470 (patch)
treeeaa105a1b1ba1df69e9fcb1039ae08a594cfeb5c /servers
parente92d55bbf417aa9f4592a863cb5b2c7ba0740e21 (diff)
downloadredot-engine-fc8ec5d8a9b5b49dfafe832f09d81042fb382470.tar.gz
Handle error when setting boot image if swap chain is not available. Skip resizing swap chain during screen creation as it's not necessary and can fail when it starts minimized.
Diffstat (limited to 'servers')
-rw-r--r--servers/rendering/renderer_rd/renderer_compositor_rd.cpp6
-rw-r--r--servers/rendering/rendering_device.cpp3
2 files changed, 5 insertions, 4 deletions
diff --git a/servers/rendering/renderer_rd/renderer_compositor_rd.cpp b/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
index 012451a5cd..14d138181f 100644
--- a/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
@@ -169,7 +169,11 @@ void RendererCompositorRD::set_boot_image(const Ref<Image> &p_image, const Color
return;
}
- RD::get_singleton()->screen_prepare_for_drawing(DisplayServer::MAIN_WINDOW_ID);
+ Error err = RD::get_singleton()->screen_prepare_for_drawing(DisplayServer::MAIN_WINDOW_ID);
+ if (err != OK) {
+ // Window is minimized and does not have valid swapchain, skip drawing without printing errors.
+ return;
+ }
RID texture = texture_storage->texture_allocate();
texture_storage->texture_2d_initialize(texture, p_image);
diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp
index 3290738b40..59b77c4537 100644
--- a/servers/rendering/rendering_device.cpp
+++ b/servers/rendering/rendering_device.cpp
@@ -3164,9 +3164,6 @@ Error RenderingDevice::screen_create(DisplayServer::WindowID p_screen) {
RDD::SwapChainID swap_chain = driver->swap_chain_create(surface);
ERR_FAIL_COND_V_MSG(swap_chain.id == 0, ERR_CANT_CREATE, "Unable to create swap chain.");
- Error err = driver->swap_chain_resize(main_queue, swap_chain, _get_swap_chain_desired_count());
- ERR_FAIL_COND_V_MSG(err != OK, ERR_CANT_CREATE, "Unable to resize the new swap chain.");
-
screen_swap_chains[p_screen] = swap_chain;
return OK;