From 37c288723ed60a3a929cfae7c50328cd4372b1c7 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Wed, 30 Sep 2026 22:44:34 +0000 Subject: [PATCH] Reset scene when vello/vello_hybrid window renderers skip a frame --- crates/anyrender_vello/src/window_renderer.rs | 2 ++ crates/anyrender_vello_hybrid/src/window_renderer.rs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/crates/anyrender_vello/src/window_renderer.rs b/crates/anyrender_vello/src/window_renderer.rs index 13b8024..cbb0b29 100644 --- a/crates/anyrender_vello/src/window_renderer.rs +++ b/crates/anyrender_vello/src/window_renderer.rs @@ -456,6 +456,7 @@ impl WindowRenderer for VelloWindowRenderer { let Ok(texture_view) = render_surface.target_texture_view() else { // Skip frame in case of error trying to get current surface texture render_surface.clear_surface_texture(); + self.scene.reset(); return; }; @@ -483,6 +484,7 @@ impl WindowRenderer for VelloWindowRenderer { drop(texture_view); if render_surface.maybe_blit_and_present().is_err() { + self.scene.reset(); return; } timer.record_time("present"); diff --git a/crates/anyrender_vello_hybrid/src/window_renderer.rs b/crates/anyrender_vello_hybrid/src/window_renderer.rs index c326650..db89eb6 100644 --- a/crates/anyrender_vello_hybrid/src/window_renderer.rs +++ b/crates/anyrender_vello_hybrid/src/window_renderer.rs @@ -504,6 +504,7 @@ impl WindowRenderer for VelloHybridWindowRenderer { let Ok(texture_view) = render_surface.target_texture_view() else { // Skip frame in case of error getting surface texture render_surface.clear_surface_texture(); + self.scene.reset(); return; }; @@ -535,6 +536,7 @@ impl WindowRenderer for VelloHybridWindowRenderer { drop(texture_view); if render_surface.maybe_blit_and_present().is_err() { + self.scene.reset(); return; } timer.record_time("present");