aboutsummaryrefslogtreecommitdiff
path: root/tests/ref/grid_reset/grid.json
AgeCommit message (Collapse)Author
2018-09-24Dynamically initialize grid storageChristian Duerr
Previously Alacritty has initialized all lines in the buffer as soon as it is started. This had the effect that terminals which aren't making use of the scrollback buffer yet, would still consume large amounts of memory, potentially even freezing the system at startup. To resolve this problem, the grid is now dynamically resized in chunks of `1000` rows. The initial size is just the visible area itself, then every time lines are written to the terminal emulator, the grid storage is grown when required. With the worst-case scenario of having 100_000 lines scrollback configured, this change improves startup performance at the cost of scrolling performance. On my machine the startup changes from ~0.3 to ~0.2 seconds. The scrolling performance with large throughput is not affected, however it is slowed down when the number of lines scrolled are close to the 100_000 configured as scrollback. The most taxing benchmark I've found for this was running `yes | dd count=500 > 500.txt` (note the relatively small file size). This will cause a slowdown on the first run from 0.05s to 0.15s. While this is significant, it lines up with the time saved at startup. This fixes #1236.
2018-06-02Optimize Row::resetJoe Wilm
Now, only cells that have been used are cleared. This is achieved by using a "occupied" memo on the Row itself. The value, `occ`, is updated wherever the Row is accessed mutably, and it's cleared to zero in Row::reset. The tests for grid scroll_up and scroll_down were updated to include a test on the value `occ` and slightly refactored, but are otherwise equivalent to the previous implementation of those tests. Because of the change to the `Row` struct, the ref tests were updated so Deserialization keeps working as expected.
2018-06-02Re-record grid_reset testChristian Duerr
The old grid_reset test expected the complete grid to be reset, but instead of resetting the whole grid the `grid.scroll_limit` is just set to `0` now. This leads to the rest of the grid still containing the old information. To fix this test it has simply be re-recorded. The new tests now still contains the complete history but it is checked that the `scroll_limit` is correctly reset.
2018-06-02Reduce size of ref testsChristian Duerr
2018-06-02Reset grid content when running `reset`Christian Duerr
In the current scrollback PR the `reset` command does not affect the scrollback history. To make sure the terminal is properly reset, it should clear the scrollback history. This commit fixes this by creating a new and empty grid whenever `reset` is executed. It takes the current dimensions and history size from the old grid. Right now there's an empty ref-test called `grid_reset` without any content, this should be implemented once #1244 is resolved. This fixes #1242.