From 2794a60bf079b15f7285101f3fcce423d0876af4 Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Thu, 12 Nov 2026 17:21:20 -0500 Subject: [PATCH] Account for image decode buffers in warm gate --- crates/render/src/images.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/render/src/images.rs b/crates/render/src/images.rs index f9f82ac31..8ae0691c7 100644 --- a/crates/render/src/images.rs +++ b/crates/render/src/images.rs @@ -250,9 +250,9 @@ pub(crate) fn warm(wants: Vec) -> usize { *held.entry((k.0, k.1)).or_default() += size_of(&e.pm); } } - let in_view = held.values().sum::(); // Smaller levels alone don't make an asset cached. held.retain(|k, _| c.map.contains_key(&(k.0, k.1, 0))); + let in_view = held.values().sum::(); for k in index.keys() { if c.bad.contains_key(k) { held.entry(*k).or_default(); @@ -278,7 +278,9 @@ pub(crate) fn warm(wants: Vec) -> usize { continue; } pixels = total; - jobs.push((decoding, wanted)); + // The estimate covers the decoded image and its converted pixels; leave headroom for + // temporary buffers inside individual format decoders. + jobs.push((decoding.saturating_mul(3) / 2, wanted)); } if jobs.len() < 2 { return 0;