From 0d7e236039c4a3e4115bf276810abb50d7868ddf Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 18 Dec 2019 23:14:54 +0100 Subject: Resize text measure cache to avoid panic This should not be really necessary, as we are not really drawing anything with the measure brush... But we are using `glyph_brush` in an unconventional way, so that may be the cause. We need to redesign `wgpu_glyph` or come up with an alternative. --- wgpu/src/text.rs | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'wgpu/src/text.rs') diff --git a/wgpu/src/text.rs b/wgpu/src/text.rs index e9a1602f..880ad1a6 100644 --- a/wgpu/src/text.rs +++ b/wgpu/src/text.rs @@ -136,11 +136,23 @@ impl Pipeline { // it uses a lifetimed `GlyphCalculatorGuard` with side-effects on drop. // This makes stuff quite inconvenient. A manual method for trimming the // cache would make our lives easier. - let _ = self - .measure_brush - .borrow_mut() - .process_queued(|_, _| {}, |_| {}) - .expect("Trim text measurements"); + loop { + let action = self + .measure_brush + .borrow_mut() + .process_queued(|_, _| {}, |_| {}); + + match action { + Ok(_) => break, + Err(glyph_brush::BrushError::TextureTooSmall { suggested }) => { + let (width, height) = suggested; + + self.measure_brush + .borrow_mut() + .resize_texture(width, height); + } + } + } } pub fn find_font(&self, font: iced_native::Font) -> wgpu_glyph::FontId { -- cgit