aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/renderer/mod.rs
diff options
context:
space:
mode:
authorKirill Chibisov <contact@kchibisov.com>2020-04-15 06:50:34 +0300
committerGitHub <noreply@github.com>2020-04-15 03:50:34 +0000
commit33abfe34a86863958e70a6b5109eab5740a6bc81 (patch)
tree7a35c4e477f87a97694c6d2562131a59ab128e05 /alacritty/src/renderer/mod.rs
parentab2db49af5467ec972e297259dd8c23022783347 (diff)
downloadr-alacritty-33abfe34a86863958e70a6b5109eab5740a6bc81.tar.gz
r-alacritty-33abfe34a86863958e70a6b5109eab5740a6bc81.tar.bz2
r-alacritty-33abfe34a86863958e70a6b5109eab5740a6bc81.zip
Add config option to set cursor thickness
Fixes #3526.
Diffstat (limited to 'alacritty/src/renderer/mod.rs')
-rw-r--r--alacritty/src/renderer/mod.rs33
1 files changed, 20 insertions, 13 deletions
diff --git a/alacritty/src/renderer/mod.rs b/alacritty/src/renderer/mod.rs
index 4526020a..caa2443f 100644
--- a/alacritty/src/renderer/mod.rs
+++ b/alacritty/src/renderer/mod.rs
@@ -213,10 +213,7 @@ impl GlyphCache {
metrics,
};
- cache.load_glyphs_for_font(regular, loader);
- cache.load_glyphs_for_font(bold, loader);
- cache.load_glyphs_for_font(italic, loader);
- cache.load_glyphs_for_font(bold_italic, loader);
+ cache.load_common_glyphs(loader);
Ok(cache)
}
@@ -302,17 +299,21 @@ impl GlyphCache {
})
}
+ /// Clear currently cached data in both GL and the registry.
+ pub fn clear_glyph_cache<L: LoadGlyph>(&mut self, loader: &mut L) {
+ loader.clear();
+ self.cache = HashMap::default();
+ self.cursor_cache = HashMap::default();
+
+ self.load_common_glyphs(loader);
+ }
+
pub fn update_font_size<L: LoadGlyph>(
&mut self,
font: config::Font,
dpr: f64,
loader: &mut L,
) -> Result<(), font::Error> {
- // Clear currently cached data in both GL and the registry
- loader.clear();
- self.cache = HashMap::default();
- self.cursor_cache = HashMap::default();
-
// Update dpi scaling
self.rasterizer.update_dpr(dpr as f32);
@@ -332,10 +333,7 @@ impl GlyphCache {
self.bold_italic_key = bold_italic;
self.metrics = metrics;
- self.load_glyphs_for_font(regular, loader);
- self.load_glyphs_for_font(bold, loader);
- self.load_glyphs_for_font(italic, loader);
- self.load_glyphs_for_font(bold_italic, loader);
+ self.clear_glyph_cache(loader);
Ok(())
}
@@ -344,6 +342,14 @@ impl GlyphCache {
self.metrics
}
+ /// Prefetch glyphs that are almost guaranteed to be loaded anyways.
+ fn load_common_glyphs<L: LoadGlyph>(&mut self, loader: &mut L) {
+ self.load_glyphs_for_font(self.font_key, loader);
+ self.load_glyphs_for_font(self.bold_italic_key, loader);
+ self.load_glyphs_for_font(self.italic_key, loader);
+ self.load_glyphs_for_font(self.bold_italic_key, loader);
+ }
+
// Calculate font metrics without access to a glyph cache
pub fn static_metrics(font: Font, dpr: f64) -> Result<font::Metrics, font::Error> {
let mut rasterizer = font::Rasterizer::new(dpr as f32, font.use_thin_strokes())?;
@@ -1019,6 +1025,7 @@ impl<'a, C> RenderApi<'a, C> {
self.config.font.offset.x,
self.config.font.offset.y,
cursor_key.is_wide,
+ self.config.cursor.thickness(),
))
});
self.add_render_item(cell, glyph);