mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
wip: trying to get the engine to work fast again
This commit is contained in:
parent
11ecf669a1
commit
d068c193dd
2 changed files with 15 additions and 6 deletions
|
|
@ -85,7 +85,7 @@ impl Tui {
|
||||||
let _input_thread = {
|
let _input_thread = {
|
||||||
let engine = engine.clone();
|
let engine = engine.clone();
|
||||||
let state = state.clone();
|
let state = state.clone();
|
||||||
let poll = Duration::from_millis(20);
|
let poll = Duration::from_millis(100);
|
||||||
spawn(move || loop {
|
spawn(move || loop {
|
||||||
if ::crossterm::event::poll(poll).is_ok() {
|
if ::crossterm::event::poll(poll).is_ok() {
|
||||||
let event = TuiEvent::Input(::crossterm::event::read().unwrap());
|
let event = TuiEvent::Input(::crossterm::event::read().unwrap());
|
||||||
|
|
@ -112,13 +112,19 @@ impl Tui {
|
||||||
let state = state.clone();
|
let state = state.clone();
|
||||||
let sleep = Duration::from_millis(20);
|
let sleep = Duration::from_millis(20);
|
||||||
spawn(move || loop {
|
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() {
|
if engine.exited() {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
engine.area = engine.backend.size().expect("get size failed").xywh();
|
engine.backend.size().expect("get size failed").xywh()
|
||||||
state.render(&mut engine).expect("render failed");
|
};
|
||||||
|
{
|
||||||
|
let mut engine = engine.write().unwrap();
|
||||||
|
engine.area = size;
|
||||||
|
state.read().unwrap().render(&mut engine).expect("render failed");
|
||||||
engine.flip();
|
engine.flip();
|
||||||
|
std::mem::drop(engine);
|
||||||
}
|
}
|
||||||
std::thread::sleep(sleep);
|
std::thread::sleep(sleep);
|
||||||
})
|
})
|
||||||
|
|
@ -544,6 +550,7 @@ where
|
||||||
Ok(Some([x, y, w, h]))
|
Ok(Some([x, y, w, h]))
|
||||||
}
|
}
|
||||||
fn render (&self, to: &mut Tui) -> Perhaps<[u16;4]> {
|
fn render (&self, to: &mut Tui) -> Perhaps<[u16;4]> {
|
||||||
|
let layout = self.layout(to.area())?;
|
||||||
self.layout(to.area())?
|
self.layout(to.area())?
|
||||||
.map(|area|(self.0)(&mut |layer| {
|
.map(|area|(self.0)(&mut |layer| {
|
||||||
to.render_in(area, &layer)?;
|
to.render_in(area, &layer)?;
|
||||||
|
|
|
||||||
|
|
@ -41,24 +41,26 @@ impl Content for Demo<Tui> {
|
||||||
//Layers2::new(|add|add(&Align::Center("FOO")))
|
//Layers2::new(|add|add(&Align::Center("FOO")))
|
||||||
//Align::Center(&self.items[self.index] as &dyn Widget<Engine = Tui>)
|
//Align::Center(&self.items[self.index] as &dyn Widget<Engine = Tui>)
|
||||||
Align::Center(Layers::new(|add|{
|
Align::Center(Layers::new(|add|{
|
||||||
|
add(&FillBg(Color::Rgb(0,128,128)))?;
|
||||||
add(&Split::down(|add|{
|
add(&Split::down(|add|{
|
||||||
add(&Layers::new(|add|{
|
add(&Layers::new(|add|{
|
||||||
//add(&Outset::WH(1, 1, FillBg(Color::Rgb(0,128,0))))?;
|
//add(&Outset::WH(1, 1, FillBg(Color::Rgb(0,128,0))))?;
|
||||||
add(&Align::Center("55555"))?;
|
add(&Align::Center("55555"))?;
|
||||||
add(&Align::Center("FOO"))?;
|
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)))?;
|
//add(&FillBg(Color::Rgb(0,128,0)))?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}))?;
|
}))?;
|
||||||
add(&Layers::new(|add|{
|
add(&Layers::new(|add|{
|
||||||
add(&Align::Center("7777777"))?;
|
add(&Align::Center("7777777"))?;
|
||||||
add(&Align::Center("BAR"))?;
|
add(&Align::Center("BAR"))?;
|
||||||
|
add(&FillBg(Color::Rgb(0,0,128)))?;
|
||||||
//add(&Outset::WH(1, 1, 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)))?;
|
||||||
//add(&FillBg(Color::Rgb(0,0,128)))?;
|
//add(&FillBg(Color::Rgb(0,0,128)))?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}))
|
}))
|
||||||
}))?;
|
}))
|
||||||
//add(&Outset::WH(1, 1, FillBg(Color::Rgb(0,128,128))))
|
//add(&Outset::WH(1, 1, FillBg(Color::Rgb(0,128,128))))
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue