🐛 Fix shape fill flickering from color picker (#10273)

This commit is contained in:
Elena Torró 2026-06-17 18:41:41 +02:00 committed by GitHub
parent 0afa108804
commit 80abc3fe3d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 3 deletions

View File

@ -2271,7 +2271,11 @@ impl RenderState {
if sync_render {
frame_type = self.render_shape_tree_sync(base_object, tree, timestamp)?;
} else {
frame_type = self.continue_render_loop(base_object, tree, timestamp)?;
// Keep progressive yielding, except for a localized shape edit on a
// stable viewbox (e.g. recoloring) which renders in one frame.
let allow_stop =
!preserve_target || self.zoom_changed() || self.options.is_interactive_transform();
frame_type = self.continue_render_loop(base_object, tree, timestamp, allow_stop)?;
// This is an option to debug frames.
if self.options.capture_frames > 0 {
@ -2331,9 +2335,11 @@ impl RenderState {
base_object: Option<&Uuid>,
tree: ShapesPoolRef,
timestamp: i32,
allow_stop: bool,
) -> Result<FrameType> {
performance::begin_measure!("continue_render_loop");
let frame_type = self.render_shape_tree_partial(base_object, tree, timestamp, true)?;
let frame_type =
self.render_shape_tree_partial(base_object, tree, timestamp, allow_stop)?;
if !self.options.is_interactive_transform() {
self.surfaces.draw_tile_atlas_to_backbuffer(

View File

@ -115,7 +115,8 @@ impl State {
}
pub fn continue_render_loop(&mut self, timestamp: i32) -> Result<FrameType> {
get_render_state().continue_render_loop(None, &self.shapes, timestamp)
let allow_stop = true;
get_render_state().continue_render_loop(None, &self.shapes, timestamp, allow_stop)
}
pub fn clear_focus_mode(&mut self) {