aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/display/mod.rs
diff options
context:
space:
mode:
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 {