diff options
author | 2024-04-06 03:06:40 +0200 | |
---|---|---|
committer | 2024-04-06 03:06:40 +0200 | |
commit | 441aac25995290a83162a4728f22492ff69a5f4d (patch) | |
tree | e53143c42d73c729a021ff510819dbf2261c55f1 /wgpu/src/geometry.rs | |
parent | 7eb16452f340fe228e6928b496f8df6e9e86e554 (diff) | |
download | iced-441aac25995290a83162a4728f22492ff69a5f4d.tar.gz iced-441aac25995290a83162a4728f22492ff69a5f4d.tar.bz2 iced-441aac25995290a83162a4728f22492ff69a5f4d.zip |
Avoid generating empty caches in `iced_wgpu`
Diffstat (limited to 'wgpu/src/geometry.rs')
-rw-r--r-- | wgpu/src/geometry.rs | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/wgpu/src/geometry.rs b/wgpu/src/geometry.rs index b689d2a7..c36ff38e 100644 --- a/wgpu/src/geometry.rs +++ b/wgpu/src/geometry.rs @@ -38,8 +38,8 @@ pub enum Geometry { #[derive(Clone)] pub struct Cache { - pub meshes: triangle::Cache, - pub text: text::Cache, + pub meshes: Option<triangle::Cache>, + pub text: Option<text::Cache>, } impl Cached for Geometry { @@ -53,8 +53,17 @@ impl Cached for Geometry { match self { Self::Live { meshes, text } => { if let Some(mut previous) = previous { - previous.meshes.update(meshes); - previous.text.update(text); + if let Some(cache) = &mut previous.meshes { + cache.update(meshes); + } else { + previous.meshes = triangle::Cache::new(meshes); + } + + if let Some(cache) = &mut previous.text { + cache.update(text); + } else { + previous.text = text::Cache::new(text); + } previous } else { |