Avoid stacking new primitives when undamaged

This commit is contained in:
Héctor Ramón Jiménez 2024-01-18 10:42:02 +01:00
parent 4b7744b980
commit b6b3e9b9f9
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -185,29 +185,31 @@ pub fn present<T: AsRef<str>>(
}) })
.unwrap_or_else(|| vec![Rectangle::with_size(viewport.logical_size())]); .unwrap_or_else(|| vec![Rectangle::with_size(viewport.logical_size())]);
if damage.is_empty() {
return Ok(());
}
surface.primitive_stack.push_front(primitives.to_vec()); surface.primitive_stack.push_front(primitives.to_vec());
surface.background_color = background_color; surface.background_color = background_color;
if !damage.is_empty() { let damage = damage::group(damage, scale_factor, physical_size);
let damage = damage::group(damage, scale_factor, physical_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),
physical_size.width, physical_size.width,
physical_size.height, physical_size.height,
) )
.expect("Create pixel map"); .expect("Create pixel map");
backend.draw( backend.draw(
&mut pixels, &mut pixels,
&mut surface.clip_mask, &mut surface.clip_mask,
primitives, primitives,
viewport, viewport,
&damage, &damage,
background_color, background_color,
overlay, overlay,
); );
}
buffer.present().map_err(|_| compositor::SurfaceError::Lost) buffer.present().map_err(|_| compositor::SurfaceError::Lost)
} }