diff options
author | 2023-03-07 06:15:05 +0100 | |
---|---|---|
committer | 2023-03-07 06:15:05 +0100 | |
commit | a8d55ceb829377725b4e7632702894fed6867eda (patch) | |
tree | 0e52401fd572833141d3c35a470fedb0a073a23c /tiny_skia/src | |
parent | 5b3977daf6df624ca5d5e1a21ce282161234b22d (diff) | |
download | iced-a8d55ceb829377725b4e7632702894fed6867eda.tar.gz iced-a8d55ceb829377725b4e7632702894fed6867eda.tar.bz2 iced-a8d55ceb829377725b4e7632702894fed6867eda.zip |
Trim `raster` cache in `iced_tiny_skia`
Diffstat (limited to 'tiny_skia/src')
-rw-r--r-- | tiny_skia/src/backend.rs | 3 | ||||
-rw-r--r-- | tiny_skia/src/raster.rs | 9 |
2 files changed, 12 insertions, 0 deletions
diff --git a/tiny_skia/src/backend.rs b/tiny_skia/src/backend.rs index 3c2a97b9..b3c7d2bc 100644 --- a/tiny_skia/src/backend.rs +++ b/tiny_skia/src/backend.rs @@ -86,6 +86,9 @@ impl Backend { self.text_pipeline.trim_cache(); + #[cfg(feature = "image")] + self.raster_pipeline.trim_cache(); + #[cfg(feature = "svg")] self.vector_pipeline.trim_cache(); } diff --git a/tiny_skia/src/raster.rs b/tiny_skia/src/raster.rs index e57f0e50..2fd73f8c 100644 --- a/tiny_skia/src/raster.rs +++ b/tiny_skia/src/raster.rs @@ -52,6 +52,10 @@ impl Pipeline { ); } } + + pub fn trim_cache(&mut self) { + self.cache.borrow_mut().trim(); + } } #[derive(Default)] @@ -98,6 +102,11 @@ impl Cache { .expect("Build pixmap from image bytes") }) } + + fn trim(&mut self) { + self.entries.retain(|key, _| self.hits.contains(key)); + self.hits.clear(); + } } struct Entry { |