From d068c193ddfd5d1f874fc885ea2592fba85a4d85 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Thu, 12 Sep 2024 17:18:20 +0300 Subject: [PATCH] wip: trying to get the engine to work fast again --- crates/tek_core/src/tui.rs | 15 +++++++++++---- crates/tek_test/src/main.rs | 6 ++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/crates/tek_core/src/tui.rs b/crates/tek_core/src/tui.rs index 3c1ad180..8b34be30 100644 --- a/crates/tek_core/src/tui.rs +++ b/crates/tek_core/src/tui.rs @@ -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)?; diff --git a/crates/tek_test/src/main.rs b/crates/tek_test/src/main.rs index 08536b05..dc9fad67 100644 --- a/crates/tek_test/src/main.rs +++ b/crates/tek_test/src/main.rs @@ -41,24 +41,26 @@ impl Content for Demo { //Layers2::new(|add|add(&Align::Center("FOO"))) //Align::Center(&self.items[self.index] as &dyn Widget) 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)))) })) }