Merge pull request #3032 from Ottatop/tiny-skia/damage-fix

Fix buffer presentation in `iced_tiny_skia`
This commit is contained in:
Héctor 2025-11-29 14:11:55 +01:00 • committed by GitHub
commit f240e8ad88
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -186,14 +186,17 @@ pub fn present(
.unwrap_or_else(|| vec![Rectangle::with_size(viewport.logical_size())]); .unwrap_or_else(|| vec![Rectangle::with_size(viewport.logical_size())]);
if damage.is_empty() { 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.layer_stack.push_front(renderer.layers().to_vec());
surface.background_color = background_color; surface.background_color = background_color;
let damage = let damage = damage::group(
damage::group(damage, Rectangle::with_size(viewport.logical_size())); damage,
Rectangle::with_size(viewport.logical_size()),
);
let mut pixels = tiny_skia::PixmapMut::from_bytes( let mut pixels = tiny_skia::PixmapMut::from_bytes(
bytemuck::cast_slice_mut(&mut buffer), bytemuck::cast_slice_mut(&mut buffer),
@ -209,6 +212,7 @@ pub fn present(
&damage, &damage,
background_color, background_color,
); );
}
on_pre_present(); on_pre_present();
buffer.present().map_err(|_| compositor::SurfaceError::Lost) buffer.present().map_err(|_| compositor::SurfaceError::Lost)