aboutsummaryrefslogtreecommitdiff
path: root/src/grid/mod.rs
diff options
context:
space:
mode:
authorChristian Duerr <contact@christianduerr.com>2018-05-01 20:07:59 +0200
committerChristian Duerr <contact@christianduerr.com>2018-05-14 19:44:52 +0200
commit48c10676a42e0908147ec6df1324bc78d0eca8e5 (patch)
treed4b5e2bd6f537923f7a0bde1cfd9c50e18618bd4 /src/grid/mod.rs
parent5de8062e03de62aaacbcf3569522c7fe0bb01739 (diff)
downloadalacritty-48c10676a42e0908147ec6df1324bc78d0eca8e5.tar.gz
alacritty-48c10676a42e0908147ec6df1324bc78d0eca8e5.zip
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.
Diffstat (limited to 'src/grid/mod.rs')
-rw-r--r--src/grid/mod.rs12
1 files changed, 1 insertions, 11 deletions
diff --git a/src/grid/mod.rs b/src/grid/mod.rs
index 87ac3d05..803f1e6e 100644
--- a/src/grid/mod.rs
+++ b/src/grid/mod.rs
@@ -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,