mirror of https://github.com/bobwen-dev/hunter
flush stdin after reading input
This commit is contained in:
parent
d248d0789f
commit
54e0a4246f
10
src/term.rs
10
src/term.rs
|
@ -1,4 +1,4 @@
|
|||
use std::io::{Stdout, Write, BufWriter};
|
||||
use std::io::{Stdout, Write, BufWriter, BufRead};
|
||||
use std::sync::{Arc, Mutex, RwLock};
|
||||
|
||||
use termion;
|
||||
|
@ -142,6 +142,14 @@ pub trait ScreenExt: Write {
|
|||
impl ScreenExt for Screen {}
|
||||
impl ScreenExt for TermMode {}
|
||||
|
||||
pub fn flush_stdin() {
|
||||
let stdin = std::io::stdin();
|
||||
let mut stdin = stdin.lock();
|
||||
|
||||
// Not 100% sure if it's OK to just call consume like this
|
||||
stdin.consume(10);
|
||||
}
|
||||
|
||||
pub fn xsize() -> u16 {
|
||||
let (xsize, _) = termion::terminal_size().unwrap();
|
||||
xsize
|
||||
|
|
|
@ -528,9 +528,11 @@ fn event_thread(rx_global: Receiver<Events>,
|
|||
fn input_thread(tx: Sender<Events>, rx_input_request: Receiver<()>) {
|
||||
std::thread::spawn(move || {
|
||||
for input in stdin().events() {
|
||||
let input = input.unwrap();
|
||||
tx.send(Events::InputEvent(input)).unwrap();
|
||||
rx_input_request.recv().unwrap();
|
||||
term::flush_stdin();
|
||||
input.map(|input| {
|
||||
tx.send(Events::InputEvent(input)).unwrap();
|
||||
rx_input_request.recv().unwrap();
|
||||
}).map_err(|e| e.into()).log();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue