🎉 Non blocking render wasm (#5726)

This commit is contained in:
Alejandro 2025-02-10 11:46:56 +01:00 committed by GitHub
parent f65f7d68e6
commit 8f11a925df
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 210 additions and 174 deletions

View file

@ -1,19 +1,6 @@
use super::{Image, Viewbox};
use skia::Contains;
use skia_safe as skia;
pub(crate) struct CachedSurfaceImage {
pub image: Image,
pub viewbox: Viewbox,
pub has_all_shapes: bool,
}
impl CachedSurfaceImage {
pub fn is_dirty_for_zooming(&mut self, viewbox: &Viewbox) -> bool {
!self.has_all_shapes && !self.viewbox.area.contains(viewbox.area)
}
pub fn is_dirty_for_panning(&mut self, _viewbox: &Viewbox) -> bool {
!self.has_all_shapes
}
}

View file

@ -23,7 +23,7 @@ fn render_debug_view(render_state: &mut RenderState) {
}
pub fn render_wasm_label(render_state: &mut RenderState) {
let canvas = render_state.final_surface.canvas();
let canvas = render_state.render_surface.canvas();
let skia::ISize { width, height } = canvas.base_layer_size();
let p = skia::Point::new(width as f32 - 100.0, height as f32 - 25.0);
@ -66,7 +66,7 @@ pub fn render(render_state: &mut RenderState) {
let paint = skia::Paint::default();
render_debug_view(render_state);
render_state.debug_surface.draw(
&mut render_state.final_surface.canvas(),
&mut render_state.render_surface.canvas(),
(0.0, 0.0),
skia::SamplingOptions::new(skia::FilterMode::Linear, skia::MipmapMode::Nearest),
Some(&paint),

View file

@ -13,7 +13,7 @@ pub fn render_drop_shadow(render_state: &mut RenderState, shadow: &Shadow, scale
);
render_state.shadow_surface.draw(
&mut render_state.final_surface.canvas(),
&mut render_state.render_surface.canvas(),
(0.0, 0.0),
skia::SamplingOptions::new(skia::FilterMode::Linear, skia::MipmapMode::Nearest),
Some(&skia::Paint::default()),