mirror of
https://github.com/alacritty/alacritty.git
synced 2025-02-10 15:46:10 -05:00
Remove push
from Storage
Since every line is allocated at startup anyways, the `push` method on `Storage` has been removed and instead of pushing to the vector the initialization has been moved to the `with_capacity` method. This has the advantage that we don't need to keep track of the `len` in push (like adding one), but we just need to worry about growing/shrinking the visible area.
This commit is contained in:
parent
a3c6c1db63
commit
eabd6bb95b
2 changed files with 12 additions and 18 deletions
|
@ -118,17 +118,7 @@ pub enum Scroll {
|
|||
|
||||
impl<T: Copy + Clone> Grid<T> {
|
||||
pub fn new(lines: index::Line, cols: index::Column, scrollback: usize, template: T) -> Grid<T> {
|
||||
let mut raw = Storage::with_capacity(*lines + scrollback, lines);
|
||||
|
||||
// Allocate all lines in the buffer, including scrollback history
|
||||
//
|
||||
// TODO (jwilm) Allocating each line at this point is expensive and
|
||||
// delays startup. A nice solution might be having `Row` delay
|
||||
// allocation until it's actually used.
|
||||
for _ in 0..raw.len() {
|
||||
raw.push(Row::new(cols, &template));
|
||||
}
|
||||
|
||||
let raw = Storage::with_capacity(*lines + scrollback, lines, Row::new(cols, &template));
|
||||
Grid {
|
||||
raw,
|
||||
cols,
|
||||
|
|
|
@ -67,9 +67,18 @@ impl<T: PartialEq> ::std::cmp::PartialEq for Storage<T> {
|
|||
|
||||
impl<T> Storage<T> {
|
||||
#[inline]
|
||||
pub fn with_capacity(cap: usize, lines: Line) -> Storage<T> {
|
||||
pub fn with_capacity(cap: usize, lines: Line, template: T) -> Storage<T>
|
||||
where
|
||||
T: Clone,
|
||||
{
|
||||
// Allocate all lines in the buffer, including scrollback history
|
||||
//
|
||||
// TODO (jwilm) Allocating each line at this point is expensive and
|
||||
// delays startup. A nice solution might be having `Row` delay
|
||||
// allocation until it's actually used.
|
||||
let inner = vec![template; cap];
|
||||
Storage {
|
||||
inner: Vec::with_capacity(cap),
|
||||
inner,
|
||||
zero: 0,
|
||||
visible_lines: lines - 1,
|
||||
len: cap,
|
||||
|
@ -120,11 +129,6 @@ impl<T> Storage<T> {
|
|||
self.visible_lines = next - 1;
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn push(&mut self, item: T) {
|
||||
self.inner.push(item)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn len(&self) -> usize {
|
||||
self.len
|
||||
|
|
Loading…
Add table
Reference in a new issue