From af584b1ba8b677e6ae42db61b491343fb68d774a Mon Sep 17 00:00:00 2001 From: Dario Date: Thu, 16 Oct 2025 13:47:18 -0300 Subject: [PATCH] Do not begin a new frame during RenderingDevice's shutdown. --- servers/rendering/rendering_device.cpp | 9 ++++++--- servers/rendering/rendering_device.h | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp index e4605a2d4e9..98448d1c419 100644 --- a/servers/rendering/rendering_device.cpp +++ b/servers/rendering/rendering_device.cpp @@ -6584,11 +6584,14 @@ void RenderingDevice::_stall_for_previous_frames() { } } -void RenderingDevice::_flush_and_stall_for_all_frames() { +void RenderingDevice::_flush_and_stall_for_all_frames(bool p_begin_frame) { _stall_for_previous_frames(); _end_frame(); _execute_frame(false); - _begin_frame(); + + if (p_begin_frame) { + _begin_frame(); + } } Error RenderingDevice::initialize(RenderingContextDriver *p_context, DisplayServer::WindowID p_main_window) { @@ -7086,7 +7089,7 @@ void RenderingDevice::finalize() { if (!frames.is_empty()) { // Wait for all frames to have finished rendering. - _flush_and_stall_for_all_frames(); + _flush_and_stall_for_all_frames(false); } // Wait for transfer workers to finish. diff --git a/servers/rendering/rendering_device.h b/servers/rendering/rendering_device.h index 21b5ee2a5ad..312dcfcc130 100644 --- a/servers/rendering/rendering_device.h +++ b/servers/rendering/rendering_device.h @@ -1587,7 +1587,7 @@ public: void _execute_frame(bool p_present); void _stall_for_frame(uint32_t p_frame); void _stall_for_previous_frames(); - void _flush_and_stall_for_all_frames(); + void _flush_and_stall_for_all_frames(bool p_begin_frame = true); template void _free_rids(T &p_owner, const char *p_type);