wip: trying to get the engine to work fast again

This commit is contained in:
🪞👃🪞 2024-09-12 17:18:20 +03:00
parent 11ecf669a1
commit d068c193dd
2 changed files with 15 additions and 6 deletions

View file

@ -85,7 +85,7 @@ impl Tui {
let _input_thread = {
let engine = engine.clone();
let state = state.clone();
let poll = Duration::from_millis(20);
let poll = Duration::from_millis(100);
spawn(move || loop {
if ::crossterm::event::poll(poll).is_ok() {
let event = TuiEvent::Input(::crossterm::event::read().unwrap());
@ -112,13 +112,19 @@ impl Tui {
let state = state.clone();
let sleep = Duration::from_millis(20);
spawn(move || loop {
if let (Ok(mut engine), Ok(state)) = (engine.write(), state.try_read()) {
let size = {
let engine = engine.read().unwrap();
if engine.exited() {
break
}
engine.area = engine.backend.size().expect("get size failed").xywh();
state.render(&mut engine).expect("render failed");
engine.backend.size().expect("get size failed").xywh()
};
{
let mut engine = engine.write().unwrap();
engine.area = size;
state.read().unwrap().render(&mut engine).expect("render failed");
engine.flip();
std::mem::drop(engine);
}
std::thread::sleep(sleep);
})
@ -544,6 +550,7 @@ where
Ok(Some([x, y, w, h]))
}
fn render (&self, to: &mut Tui) -> Perhaps<[u16;4]> {
let layout = self.layout(to.area())?;
self.layout(to.area())?
.map(|area|(self.0)(&mut |layer| {
to.render_in(area, &layer)?;