diff options
author | Dario <dariosamo@gmail.com> | 2024-02-13 14:19:26 -0300 |
---|---|---|
committer | Dario <dariosamo@gmail.com> | 2024-02-13 14:19:26 -0300 |
commit | fc8ec5d8a9b5b49dfafe832f09d81042fb382470 (patch) | |
tree | eaa105a1b1ba1df69e9fcb1039ae08a594cfeb5c | |
parent | e92d55bbf417aa9f4592a863cb5b2c7ba0740e21 (diff) | |
download | redot-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.
-rw-r--r-- | servers/rendering/renderer_rd/renderer_compositor_rd.cpp | 6 | ||||
-rw-r--r-- | servers/rendering/rendering_device.cpp | 3 |
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; |