Fix buffer presentation in iced_tiny_skia

Co-authored-by: Ottatop <ottatop1227@gmail.com>
This commit is contained in:
Héctor Ramón Jiménez 2025-11-29 13:45:25 +01:00
parent 8b2b302762
commit 5db08b9f54
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -186,30 +186,34 @@ pub fn present(
.unwrap_or_else(|| vec![Rectangle::with_size(viewport.logical_size())]);
if damage.is_empty() {
return Ok(());
if let Some(last_layers) = last_layers {
surface.layer_stack.push_front(last_layers.clone());
}
} else {
surface.layer_stack.push_front(renderer.layers().to_vec());
surface.background_color = background_color;
let damage = damage::group(
damage,
Rectangle::with_size(viewport.logical_size()),
);
let mut pixels = tiny_skia::PixmapMut::from_bytes(
bytemuck::cast_slice_mut(&mut buffer),
physical_size.width,
physical_size.height,
)
.expect("Create pixel map");
renderer.draw(
&mut pixels,
&mut surface.clip_mask,
viewport,
&damage,
background_color,
);
}
surface.layer_stack.push_front(renderer.layers().to_vec());
surface.background_color = background_color;
let damage =
damage::group(damage, Rectangle::with_size(viewport.logical_size()));
let mut pixels = tiny_skia::PixmapMut::from_bytes(
bytemuck::cast_slice_mut(&mut buffer),
physical_size.width,
physical_size.height,
)
.expect("Create pixel map");
renderer.draw(
&mut pixels,
&mut surface.clip_mask,
viewport,
&damage,
background_color,
);
on_pre_present();
buffer.present().map_err(|_| compositor::SurfaceError::Lost)
}