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)?;

View file

@ -41,24 +41,26 @@ impl Content for Demo<Tui> {
//Layers2::new(|add|add(&Align::Center("FOO")))
//Align::Center(&self.items[self.index] as &dyn Widget<Engine = Tui>)
Align::Center(Layers::new(|add|{
add(&FillBg(Color::Rgb(0,128,128)))?;
add(&Split::down(|add|{
add(&Layers::new(|add|{
//add(&Outset::WH(1, 1, FillBg(Color::Rgb(0,128,0))))?;
add(&Align::Center("55555"))?;
add(&Align::Center("FOO"))?;
//add(&FillBg(Color::Rgb(0,128,0)))?;
add(&FillBg(Color::Rgb(0,128,0)))?;
//add(&FillBg(Color::Rgb(0,128,0)))?;
Ok(())
}))?;
add(&Layers::new(|add|{
add(&Align::Center("7777777"))?;
add(&Align::Center("BAR"))?;
add(&FillBg(Color::Rgb(0,0,128)))?;
//add(&Outset::WH(1, 1, FillBg(Color::Rgb(0,0,128))))?;
//add(&FillBg(Color::Rgb(0,0,128)))?;
//add(&FillBg(Color::Rgb(0,0,128)))?;
Ok(())
}))
}))?;
}))
//add(&Outset::WH(1, 1, FillBg(Color::Rgb(0,128,128))))
}))
}