Use alternate buffer

embed
Manos Pitsidianakis 6 years ago
parent 0092496632
commit ac334b09b1
No known key found for this signature in database
GPG Key ID: 73627C2F690DF710

@ -52,6 +52,7 @@ use termion::{clear, style, cursor};
use termion::raw::IntoRawMode; use termion::raw::IntoRawMode;
use termion::event::{Key as TermionKey, }; use termion::event::{Key as TermionKey, };
use termion::input::TermRead; use termion::input::TermRead;
use termion::screen::AlternateScreen;
extern crate chan; extern crate chan;
#[macro_use] #[macro_use]
@ -146,7 +147,7 @@ pub struct State<W: Write> {
rows: usize, rows: usize,
grid: CellBuffer, grid: CellBuffer,
stdout: termion::raw::RawTerminal<W>, stdout: termion::screen::AlternateScreen<termion::raw::RawTerminal<W>>,
sender: Sender<ThreadEvent>, sender: Sender<ThreadEvent>,
entities: Vec<Entity>, entities: Vec<Entity>,
pub context: Context, pub context: Context,
@ -164,6 +165,7 @@ impl<W: Write> State<W> {
pub fn new(stdout: W, sender: Sender<ThreadEvent>) -> Self { pub fn new(stdout: W, sender: Sender<ThreadEvent>) -> Self {
let settings = Settings::new(); let settings = Settings::new();
let backends = Backends::new(); let backends = Backends::new();
let stdout = AlternateScreen::from(stdout.into_raw_mode().unwrap());
let termsize = termion::terminal_size().ok(); let termsize = termion::terminal_size().ok();
let termcols = termsize.map(|(w,_)| w); let termcols = termsize.map(|(w,_)| w);
@ -176,7 +178,7 @@ impl<W: Write> State<W> {
cols: cols, cols: cols,
rows: rows, rows: rows,
grid: CellBuffer::new(cols, rows, Cell::with_char(' ')), grid: CellBuffer::new(cols, rows, Cell::with_char(' ')),
stdout: stdout.into_raw_mode().unwrap(), stdout: stdout,
sender: sender, sender: sender,
entities: Vec::with_capacity(1), entities: Vec::with_capacity(1),

Loading…
Cancel
Save