From 0d7e236039c4a3e4115bf276810abb50d7868ddf Mon Sep 17 00:00:00 2001
From: Héctor Ramón Jiménez <hector0193@gmail.com>
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(-)

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