aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/display/mod.rs
diff options
context:
space:
mode:
authorAyose <ayosec@gmail.com>2021-03-10 20:21:36 +0000
committerbetaboon <betaboon@0x80.ninja>2021-08-17 15:44:40 +0200
commit0fd3793a963015e8f91021e35dbb2169d15c3211 (patch)
treea83c1f53a123f84376a58cf2a5114ad581092e0a /alacritty/src/display/mod.rs
parentc24d7dfd0d2d8849f0398d7cb1a65d6562ee7a0d (diff)
downloadr-alacritty-0fd3793a963015e8f91021e35dbb2169d15c3211.tar.gz
r-alacritty-0fd3793a963015e8f91021e35dbb2169d15c3211.tar.bz2
r-alacritty-0fd3793a963015e8f91021e35dbb2169d15c3211.zip
Add Sixel support
Fixes #910
Diffstat (limited to 'alacritty/src/display/mod.rs')
-rw-r--r--alacritty/src/display/mod.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/alacritty/src/display/mod.rs b/alacritty/src/display/mod.rs
index d4c5c274..5e958f03 100644
--- a/alacritty/src/display/mod.rs
+++ b/alacritty/src/display/mod.rs
@@ -479,7 +479,7 @@ impl Display {
/// This call may block if vsync is enabled.
pub fn draw<T: EventListener>(
&mut self,
- terminal: MutexGuard<'_, Term<T>>,
+ mut terminal: MutexGuard<'_, Term<T>>,
message_buffer: &MessageBuffer,
config: &Config,
search_state: &SearchState,
@@ -502,6 +502,8 @@ impl Display {
let vi_mode = terminal.mode().contains(TermMode::VI);
let vi_mode_cursor = if vi_mode { Some(terminal.vi_mode_cursor) } else { None };
+ let graphics_queues = terminal.graphics_take_queues();
+
// Drop terminal as early as possible to free lock.
drop(terminal);
@@ -509,7 +511,12 @@ impl Display {
api.clear(background_color);
});
+ if let Some(graphics_queues) = graphics_queues {
+ self.renderer.graphics_run_updates(graphics_queues, &size_info);
+ }
+
let mut lines = RenderLines::new();
+ let mut graphics_list = renderer::graphics::RenderList::default();
// Draw grid.
{
@@ -532,12 +539,17 @@ impl Display {
// Update underline/strikeout.
lines.update(&cell);
+ // Track any graphic present in the cell.
+ graphics_list.update(&cell);
+
// Draw the cell.
api.render_cell(cell, glyph_cache);
}
});
}
+ self.renderer.graphics_draw(graphics_list, &size_info);
+
let mut rects = lines.rects(&metrics, &size_info);
if let Some(vi_mode_cursor) = vi_mode_cursor {