aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/display
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2021-10-05 14:36:31 -0600
committerJosh Rahm <rahm@google.com>2021-10-05 14:36:31 -0600
commit7a209fa45f1f4d07cb4a885e8ea3d03e47cf48ae (patch)
tree026d75fdc19e19952cfba3020c118f24df4ac412 /alacritty/src/display
parent1725e30e144b04e2e2e30efc76eb968c97a0eabf (diff)
parent98fbb3f9285d8c00836e3bcfa6e1e13bf809e2a2 (diff)
downloadr-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')
-rw-r--r--alacritty/src/display/content.rs3
-rw-r--r--alacritty/src/display/mod.rs14
2 files changed, 16 insertions, 1 deletions
diff --git a/alacritty/src/display/content.rs b/alacritty/src/display/content.rs
index 6fef9574..297aefd6 100644
--- a/alacritty/src/display/content.rs
+++ b/alacritty/src/display/content.rs
@@ -6,6 +6,7 @@ use std::ops::{Deref, DerefMut, RangeInclusive};
use alacritty_terminal::ansi::{Color, CursorShape, NamedColor};
use alacritty_terminal::config::Config;
use alacritty_terminal::event::EventListener;
+use alacritty_terminal::graphics::GraphicCell;
use alacritty_terminal::grid::{Dimensions, Indexed};
use alacritty_terminal::index::{Column, Direction, Line, Point};
use alacritty_terminal::term::cell::{Cell, Flags};
@@ -187,6 +188,7 @@ pub struct RenderableCell {
pub character: char,
pub zerowidth: Option<Vec<char>>,
pub point: Point<usize>,
+ pub graphic: Option<GraphicCell>,
pub fg: Rgb,
pub bg: Rgb,
pub sp: Rgb, // Special
@@ -263,6 +265,7 @@ impl RenderableCell {
RenderableCell {
zerowidth: cell.zerowidth().map(|zerowidth| zerowidth.to_vec()),
+ graphic: cell.graphic().cloned(),
flags: cell.flags,
character,
bg_alpha,
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 {