diff options
author | Greg Depoire--Ferrer <56923875+greg904@users.noreply.github.com> | 2022-02-16 20:57:46 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-16 20:57:46 +0000 |
commit | a64553bbaf9e058f02d278dfa7104ea96fc58dd8 (patch) | |
tree | d332bd65a6ead6a6f3f0b368db994b1dd50fccac /alacritty/src/display/mod.rs | |
parent | ed5dbc11183030367c9a510a9706f6791b54430f (diff) | |
download | r-alacritty-a64553bbaf9e058f02d278dfa7104ea96fc58dd8.tar.gz r-alacritty-a64553bbaf9e058f02d278dfa7104ea96fc58dd8.tar.bz2 r-alacritty-a64553bbaf9e058f02d278dfa7104ea96fc58dd8.zip |
Reuse Rasterizer in Display::new
Instead of creating a `Rasterizer` to guess the window dimensions,
dropping it and then creating a new one for the glyph cache, reuse the
same `Rasterizer`.
This prevents the font from being loaded twice during startup.
Diffstat (limited to 'alacritty/src/display/mod.rs')
-rw-r--r-- | alacritty/src/display/mod.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/alacritty/src/display/mod.rs b/alacritty/src/display/mod.rs index ef4cfc10..c58ded5d 100644 --- a/alacritty/src/display/mod.rs +++ b/alacritty/src/display/mod.rs @@ -232,7 +232,8 @@ impl Display { }; // Guess the target window dimensions. - let metrics = GlyphCache::static_metrics(config.font.clone(), estimated_dpr)?; + let mut rasterizer = Rasterizer::new(estimated_dpr as f32, config.font.use_thin_strokes)?; + let metrics = GlyphCache::static_metrics(&mut rasterizer, config.font.clone())?; let (cell_width, cell_height) = compute_cell_size(config, &metrics); // Guess the target window size if the user has specified the number of lines/columns. @@ -256,12 +257,13 @@ impl Display { )?; info!("Device pixel ratio: {}", window.dpr); + rasterizer.update_dpr(window.dpr as f32); // Create renderer. let mut renderer = QuadRenderer::new()?; let (glyph_cache, cell_width, cell_height) = - Self::new_glyph_cache(window.dpr, &mut renderer, config)?; + Self::new_glyph_cache(rasterizer, &mut renderer, config)?; if let Some(dimensions) = dimensions { if (estimated_dpr - window.dpr).abs() < f64::EPSILON { @@ -361,12 +363,11 @@ impl Display { } fn new_glyph_cache( - dpr: f64, + rasterizer: Rasterizer, renderer: &mut QuadRenderer, config: &UiConfig, ) -> Result<(GlyphCache, f32, f32), Error> { let font = config.font.clone(); - let rasterizer = Rasterizer::new(dpr as f32, config.font.use_thin_strokes)?; // Initialize glyph cache. let glyph_cache = { |