diff options
author | Josh Rahm <rahm@google.com> | 2021-10-05 14:36:31 -0600 |
---|---|---|
committer | Josh Rahm <rahm@google.com> | 2021-10-05 14:36:31 -0600 |
commit | 7a209fa45f1f4d07cb4a885e8ea3d03e47cf48ae (patch) | |
tree | 026d75fdc19e19952cfba3020c118f24df4ac412 /alacritty/src/display/mod.rs | |
parent | 1725e30e144b04e2e2e30efc76eb968c97a0eabf (diff) | |
parent | 98fbb3f9285d8c00836e3bcfa6e1e13bf809e2a2 (diff) | |
download | r-alacritty-7a209fa45f1f4d07cb4a885e8ea3d03e47cf48ae.tar.gz r-alacritty-7a209fa45f1f4d07cb4a885e8ea3d03e47cf48ae.tar.bz2 r-alacritty-7a209fa45f1f4d07cb4a885e8ea3d03e47cf48ae.zip |
Merge remote-tracking branch 'betaboon/graphics' into experimental
Diffstat (limited to 'alacritty/src/display/mod.rs')
-rw-r--r-- | alacritty/src/display/mod.rs | 14 |
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 { |