From a8d55ceb829377725b4e7632702894fed6867eda Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 7 Mar 2023 06:15:05 +0100 Subject: Trim `raster` cache in `iced_tiny_skia` --- tiny_skia/src/backend.rs | 3 +++ tiny_skia/src/raster.rs | 9 +++++++++ 2 files changed, 12 insertions(+) (limited to 'tiny_skia/src') 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 { -- cgit