mirror of
https://github.com/alacritty/alacritty.git
synced 2024-11-18 13:55:23 -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
946ef1e306
commit
0853fafe48
2 changed files with 12 additions and 18 deletions
|
@ -114,17 +114,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,
|
||||
|
|
|
@ -36,9 +36,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,
|
||||
|
@ -89,11 +98,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…
Reference in a new issue