From bf7668dbd764e73359569f49358aa82bfa53b510 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 8 Feb 2024 11:28:41 -0700 Subject: [PATCH] Use cosmic-text shape-run-cache --- Cargo.lock | 4 ++-- Cargo.toml | 1 + src/terminal.rs | 4 ++++ src/terminal_box.rs | 14 +------------- 4 files changed, 8 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fa64025..3b00401 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -953,8 +953,8 @@ dependencies = [ [[package]] name = "cosmic-text" -version = "0.10.0" -source = "git+https://github.com/pop-os/cosmic-text.git#be471833c9ee563866f07593354a41dd40761a18" +version = "0.11.1" +source = "git+https://github.com/pop-os/cosmic-text.git#cb447ea8c6717d558994575b93a00baa549d01f8" dependencies = [ "bitflags 2.4.2", "fontdb", diff --git a/Cargo.toml b/Cargo.toml index 466b96a..d381f35 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,6 +23,7 @@ palette = "0.7" [dependencies.cosmic-text] git = "https://github.com/pop-os/cosmic-text.git" +features = ["shape-run-cache"] [dependencies.libcosmic] git = "https://github.com/pop-os/libcosmic.git" diff --git a/src/terminal.rs b/src/terminal.rs index 273e67f..b077877 100644 --- a/src/terminal.rs +++ b/src/terminal.rs @@ -371,6 +371,8 @@ impl Terminal { buffer.set_size(font_system.raw(), width as f32, height as f32); }); + self.needs_update = true; + log::debug!("resize {:?}", instant.elapsed()); } } @@ -780,9 +782,11 @@ impl Terminal { buffer.set_redraw(true); } + // Shape and trim shape run cache { let mut font_system = font_system().write().unwrap(); buffer.shape_until_scroll(font_system.raw(), true); + font_system.raw().shape_run_cache.trim(1024); } } diff --git a/src/terminal_box.rs b/src/terminal_box.rs index 719cf73..d22c6e2 100644 --- a/src/terminal_box.rs +++ b/src/terminal_box.rs @@ -8,7 +8,7 @@ use alacritty_terminal::{ use cosmic::{ cosmic_theme::palette::{blend::Compose, WithAlpha}, iced::{ - advanced::graphics::text::{font_system, Raw}, + advanced::graphics::text::Raw, event::{Event, Status}, keyboard::{Event as KeyEvent, KeyCode, Modifiers}, mouse::{self, Button, Event as MouseEvent, ScrollDelta}, @@ -147,12 +147,6 @@ where terminal.needs_update = false; } - // Ensure terminal is shaped - terminal.with_buffer_mut(|buffer| { - let mut font_system = font_system().write().unwrap(); - buffer.shape_until_scroll(font_system.raw(), true); - }); - // Calculate layout lines terminal.with_buffer(|buffer| { let mut layout_lines = 0; @@ -250,12 +244,6 @@ where terminal.needs_update = false; } - // Ensure terminal is shaped - terminal.with_buffer_mut(|buffer| { - let mut font_system = font_system().write().unwrap(); - buffer.shape_until_scroll(font_system.raw(), true); - }); - // Render default background { let meta = &terminal.metadata_set[terminal.default_attrs().metadata];