summaryrefslogtreecommitdiffstats
path: root/wgpu
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-04-06 00:57:59 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-04-06 00:57:59 +0200
commit7eb16452f340fe228e6928b496f8df6e9e86e554 (patch)
tree2187da46f295a33263e34b1ee1f1c522f34926cc /wgpu
parent6d3e1d835e1688fbc58622a03a784ed25ed3f0e1 (diff)
downloadiced-7eb16452f340fe228e6928b496f8df6e9e86e554.tar.gz
iced-7eb16452f340fe228e6928b496f8df6e9e86e554.tar.bz2
iced-7eb16452f340fe228e6928b496f8df6e9e86e554.zip
Avoid generating empty `Frame` geometry in `iced_wgpu`
Diffstat (limited to 'wgpu')
-rw-r--r--wgpu/src/geometry.rs43
1 files changed, 25 insertions, 18 deletions
diff --git a/wgpu/src/geometry.rs b/wgpu/src/geometry.rs
index c8c350c5..b689d2a7 100644
--- a/wgpu/src/geometry.rs
+++ b/wgpu/src/geometry.rs
@@ -422,24 +422,31 @@ impl BufferStack {
}
fn into_meshes(self, clip_bounds: Rectangle) -> impl Iterator<Item = Mesh> {
- self.stack.into_iter().map(move |buffer| match buffer {
- Buffer::Solid(buffer) => Mesh::Solid {
- buffers: mesh::Indexed {
- vertices: buffer.vertices,
- indices: buffer.indices,
- },
- clip_bounds,
- transformation: Transformation::IDENTITY,
- },
- Buffer::Gradient(buffer) => Mesh::Gradient {
- buffers: mesh::Indexed {
- vertices: buffer.vertices,
- indices: buffer.indices,
- },
- clip_bounds,
- transformation: Transformation::IDENTITY,
- },
- })
+ self.stack
+ .into_iter()
+ .filter_map(move |buffer| match buffer {
+ Buffer::Solid(buffer) if !buffer.indices.is_empty() => {
+ Some(Mesh::Solid {
+ buffers: mesh::Indexed {
+ vertices: buffer.vertices,
+ indices: buffer.indices,
+ },
+ clip_bounds,
+ transformation: Transformation::IDENTITY,
+ })
+ }
+ Buffer::Gradient(buffer) if !buffer.indices.is_empty() => {
+ Some(Mesh::Gradient {
+ buffers: mesh::Indexed {
+ vertices: buffer.vertices,
+ indices: buffer.indices,
+ },
+ clip_bounds,
+ transformation: Transformation::IDENTITY,
+ })
+ }
+ _ => None,
+ })
}
}