From 385fc6b76447b6d4dc9efc1eee375a45a6adfc4d Mon Sep 17 00:00:00 2001 From: Rafael Caricio Date: Fri, 19 Jun 2020 15:32:58 +0200 Subject: [PATCH] Remove threads from bar example --- examples/bar.rs | 42 +++++++++--------------------------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/examples/bar.rs b/examples/bar.rs index 2377e36..0874514 100644 --- a/examples/bar.rs +++ b/examples/bar.rs @@ -8,7 +8,6 @@ use lvgl::style::Style; use lvgl::widgets::{Bar, Label, LabelAlign}; use lvgl::{self, Align, Animation, Color, Event, LvError, Part, State, Widget, UI}; use lvgl_sys; -use std::sync::{mpsc, Arc, Mutex}; use std::thread::sleep; use std::time::{Duration, Instant}; @@ -57,43 +56,18 @@ fn main() -> Result<(), LvError> { loading_style.set_text_color(State::DEFAULT, Color::from_rgb((0, 0, 0))); loading_lbl.add_style(Part::Main, loading_style)?; - let threaded_ui = Arc::new(Mutex::new(ui)); - - let (stop_ch, read_ch) = mpsc::channel(); - let closure_ui = threaded_ui.clone(); - let mut loop_started = Instant::now(); - let tick_thr = std::thread::spawn(move || loop { - // Needs to be called periodically for LittlevGL internal timing calculations. - { - let mut ui = closure_ui.lock().unwrap(); - ui.tick_inc(loop_started.elapsed()); - } - - sleep(Duration::from_millis(5)); - if read_ch.try_recv().is_ok() { - break; - } - loop_started = Instant::now(); - }); - let mut i = 0; + let mut loop_started = Instant::now(); 'running: loop { if i > 100 { i = 0; - threaded_ui - .lock() - .unwrap() - .event_send(&mut bar, Event::Clicked)? + ui.event_send(&mut bar, Event::Clicked)?; } bar.set_value(i, Animation::ON)?; i += 1; - sleep(Duration::from_millis(50)); - - threaded_ui.lock().unwrap().task_handler(); - if let Some(disp) = threaded_ui.lock().unwrap().get_display_ref() { - window.update(disp); - } + ui.task_handler(); + window.update(ui.get_display_ref().unwrap()); for event in window.events() { match event { @@ -101,10 +75,12 @@ fn main() -> Result<(), LvError> { _ => {} } } - } - stop_ch.send(true).unwrap(); - tick_thr.join().unwrap(); + sleep(Duration::from_millis(50)); + + ui.tick_inc(loop_started.elapsed()); + loop_started = Instant::now(); + } Ok(()) }