Fix buffer presentation in iced_tiny_skia
Co-authored-by: Ottatop <ottatop1227@gmail.com>
This commit is contained in:
parent
8b2b302762
commit
5db08b9f54
1 changed files with 26 additions and 22 deletions
|
|
@ -186,30 +186,34 @@ 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.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();
|
on_pre_present();
|
||||||
buffer.present().map_err(|_| compositor::SurfaceError::Lost)
|
buffer.present().map_err(|_| compositor::SurfaceError::Lost)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue