Skip to content

Commit f4618fd

Browse files
committed
Simplify examples, don't use threads
1 parent 385fc6b commit f4618fd

File tree

5 files changed

+30
-129
lines changed

5 files changed

+30
-129
lines changed

examples/arc.rs

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@ use lvgl::widgets::{Arc, Label, LabelAlign};
99
use lvgl::{self, Align, Color, Part, State, UI};
1010
use lvgl::{LvError, Widget};
1111
use lvgl_sys;
12-
use std::sync::{mpsc, Arc as StdArc, Mutex};
13-
use std::thread::sleep;
14-
use std::time::{Duration, Instant};
12+
use std::time::Instant;
1513

1614
fn main() -> Result<(), LvError> {
1715
let display: SimulatorDisplay<Rgb565> = SimulatorDisplay::new(Size::new(
@@ -51,29 +49,11 @@ fn main() -> Result<(), LvError> {
5149
loading_style.set_text_color(State::DEFAULT, Color::from_rgb((0, 0, 0)));
5250
loading_lbl.add_style(Part::Main, loading_style)?;
5351

54-
let threaded_ui = StdArc::new(Mutex::new(ui));
55-
56-
let (stop_ch, read_ch) = mpsc::channel();
57-
let closure_ui = threaded_ui.clone();
58-
let mut loop_started = Instant::now();
59-
let tick_thr = std::thread::spawn(move || loop {
60-
// Needs to be called periodically for LittlevGL internal timing calculations.
61-
{
62-
let mut ui = closure_ui.lock().unwrap();
63-
ui.tick_inc(loop_started.elapsed());
64-
}
65-
66-
sleep(Duration::from_millis(5));
67-
if read_ch.try_recv().is_ok() {
68-
break;
69-
}
70-
loop_started = Instant::now();
71-
});
72-
7352
let mut angle = 0;
7453
let mut forward = true;
75-
7654
let mut i = 0;
55+
56+
let mut loop_started = Instant::now();
7757
'running: loop {
7858
if i > 270 {
7959
forward = if forward { false } else { true };
@@ -83,23 +63,19 @@ fn main() -> Result<(), LvError> {
8363
arc.set_end_angle(angle + 135)?;
8464
i += 1;
8565

86-
sleep(Duration::from_millis(50));
87-
88-
threaded_ui.lock().unwrap().task_handler();
89-
if let Some(disp) = threaded_ui.lock().unwrap().get_display_ref() {
90-
window.update(disp);
91-
}
66+
ui.task_handler();
67+
window.update(ui.get_display_ref().unwrap());
9268

9369
for event in window.events() {
9470
match event {
9571
SimulatorEvent::Quit => break 'running,
9672
_ => {}
9773
}
9874
}
99-
}
10075

101-
stop_ch.send(true).unwrap();
102-
tick_thr.join().unwrap();
76+
ui.tick_inc(loop_started.elapsed());
77+
loop_started = Instant::now();
78+
}
10379

10480
Ok(())
10581
}

examples/bar.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ use lvgl::style::Style;
88
use lvgl::widgets::{Bar, Label, LabelAlign};
99
use lvgl::{self, Align, Animation, Color, Event, LvError, Part, State, Widget, UI};
1010
use lvgl_sys;
11-
use std::thread::sleep;
12-
use std::time::{Duration, Instant};
11+
use std::time::Instant;
1312

1413
fn main() -> Result<(), LvError> {
1514
let display: SimulatorDisplay<Rgb565> = SimulatorDisplay::new(Size::new(
@@ -76,8 +75,6 @@ fn main() -> Result<(), LvError> {
7675
}
7776
}
7877

79-
sleep(Duration::from_millis(50));
80-
8178
ui.tick_inc(loop_started.elapsed());
8279
loop_started = Instant::now();
8380
}

examples/button_click.rs

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ use lvgl::style::Style;
88
use lvgl::widgets::{Btn, Label};
99
use lvgl::{self, Align, Color, Event, LvError, Part, State, Widget, UI};
1010
use lvgl_sys;
11-
use std::sync::{mpsc, Arc, Mutex};
12-
use std::thread::sleep;
13-
use std::time::{Duration, Instant};
11+
use std::time::Instant;
1412

1513
fn main() -> Result<(), LvError> {
1614
let display: SimulatorDisplay<Rgb565> = SimulatorDisplay::new(Size::new(
@@ -56,30 +54,11 @@ fn main() -> Result<(), LvError> {
5654
}
5755
})?;
5856

59-
let threaded_ui = Arc::new(Mutex::new(ui));
60-
61-
let (stop_ch, read_ch) = mpsc::channel();
62-
let closure_ui = threaded_ui.clone();
6357
let mut loop_started = Instant::now();
64-
let tick_thr = std::thread::spawn(move || loop {
65-
// Needs to be called periodically for LittlevGL internal timing calculations.
66-
{
67-
let mut ui = closure_ui.lock().unwrap();
68-
ui.tick_inc(loop_started.elapsed());
69-
}
70-
71-
sleep(Duration::from_millis(5));
72-
if read_ch.try_recv().is_ok() {
73-
break;
74-
}
75-
loop_started = Instant::now();
76-
});
77-
7858
'running: loop {
79-
threaded_ui.lock().unwrap().task_handler();
80-
if let Some(disp) = threaded_ui.lock().unwrap().get_display_ref() {
81-
window.update(disp);
82-
}
59+
ui.task_handler();
60+
window.update(ui.get_display_ref().unwrap());
61+
8362
for event in window.events() {
8463
match event {
8564
SimulatorEvent::MouseButtonUp {
@@ -88,21 +67,16 @@ fn main() -> Result<(), LvError> {
8867
} => {
8968
println!("Clicked on: {:?}", point);
9069
// Send a event to the button directly
91-
threaded_ui
92-
.lock()
93-
.unwrap()
94-
.event_send(&mut button, Event::Clicked)?;
70+
ui.event_send(&mut button, Event::Clicked)?;
9571
}
9672
SimulatorEvent::Quit => break 'running,
9773
_ => {}
9874
}
9975
}
10076

101-
sleep(Duration::from_millis(5));
77+
ui.tick_inc(loop_started.elapsed());
78+
loop_started = Instant::now();
10279
}
10380

104-
stop_ch.send(true).unwrap();
105-
tick_thr.join().unwrap();
106-
10781
Ok(())
10882
}

examples/demo.rs

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ use lvgl::style::Style;
99
use lvgl::widgets::{Label, LabelAlign};
1010
use lvgl::{Align, Color, LvError, Part, State, Widget, UI};
1111
use lvgl_sys;
12-
use std::sync::{mpsc, Arc, Mutex};
1312
use std::thread::sleep;
1413
use std::time::{Duration, Instant};
1514

@@ -75,26 +74,8 @@ fn main() -> Result<(), LvError> {
7574
power.set_label_align(LabelAlign::Right)?;
7675
power.set_align(&mut screen, Align::InTopRight, 0, 0)?;
7776

78-
let threaded_ui = Arc::new(Mutex::new(ui));
79-
80-
let (stop_ch, read_ch) = mpsc::channel();
81-
let closure_ui = threaded_ui.clone();
82-
let mut loop_started = Instant::now();
83-
let tick_thr = std::thread::spawn(move || loop {
84-
// Needs to be called periodically for LittlevGL internal timing calculations.
85-
{
86-
let mut ui = closure_ui.lock().unwrap();
87-
ui.tick_inc(loop_started.elapsed());
88-
}
89-
90-
sleep(Duration::from_millis(5));
91-
if read_ch.try_recv().is_ok() {
92-
break;
93-
}
94-
loop_started = Instant::now();
95-
});
96-
9777
let mut i = 0;
78+
let mut loop_started = Instant::now();
9879
'running: loop {
9980
if i > 59 {
10081
i = 0;
@@ -103,23 +84,20 @@ fn main() -> Result<(), LvError> {
10384
time.set_text(CString::new(val.as_str()).unwrap().as_c_str())?;
10485
i = 1 + i;
10586

106-
sleep(Duration::from_secs(1));
107-
108-
threaded_ui.lock().unwrap().task_handler();
109-
if let Some(disp) = threaded_ui.lock().unwrap().get_display_ref() {
110-
window.update(disp);
111-
}
87+
ui.task_handler();
88+
window.update(ui.get_display_ref().unwrap());
11289

11390
for event in window.events() {
11491
match event {
11592
SimulatorEvent::Quit => break 'running,
11693
_ => {}
11794
}
11895
}
119-
}
96+
sleep(Duration::from_secs(1));
12097

121-
stop_ch.send(true).unwrap();
122-
tick_thr.join().unwrap();
98+
ui.tick_inc(loop_started.elapsed());
99+
loop_started = Instant::now();
100+
}
123101

124102
Ok(())
125103
}

examples/gauge.rs

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ use lvgl::style::{Opacity, Style};
77
use lvgl::widgets::Gauge;
88
use lvgl::{self, Align, Color, LvError, Part, State, Widget, UI};
99
use lvgl_sys;
10-
use std::sync::{mpsc, Arc, Mutex};
11-
use std::thread::sleep;
12-
use std::time::{Duration, Instant};
10+
use std::time::Instant;
1311

1412
fn main() -> Result<(), LvError> {
1513
let display: SimulatorDisplay<Rgb565> = SimulatorDisplay::new(Size::new(
@@ -56,33 +54,13 @@ fn main() -> Result<(), LvError> {
5654
gauge.set_align(&mut screen, Align::Center, 0, 0)?;
5755
gauge.set_value(0, 50)?;
5856

59-
let threaded_ui = Arc::new(Mutex::new(ui));
60-
61-
let (stop_ch, read_ch) = mpsc::channel();
62-
let closure_ui = threaded_ui.clone();
63-
let mut loop_started = Instant::now();
64-
let tick_thr = std::thread::spawn(move || loop {
65-
// Needs to be called periodically for LittlevGL internal timing calculations.
66-
{
67-
let mut ui = closure_ui.lock().unwrap();
68-
ui.tick_inc(loop_started.elapsed());
69-
}
70-
71-
sleep(Duration::from_millis(5));
72-
if read_ch.try_recv().is_ok() {
73-
break;
74-
}
75-
loop_started = Instant::now();
76-
});
77-
7857
let mut i = 0;
58+
let mut loop_started = Instant::now();
7959
'running: loop {
8060
gauge.set_value(0, i)?;
8161

82-
threaded_ui.lock().unwrap().task_handler();
83-
if let Some(disp) = threaded_ui.lock().unwrap().get_display_ref() {
84-
window.update(disp);
85-
}
62+
ui.task_handler();
63+
window.update(ui.get_display_ref().unwrap());
8664

8765
for event in window.events() {
8866
match event {
@@ -97,17 +75,15 @@ fn main() -> Result<(), LvError> {
9775
}
9876
}
9977

100-
sleep(Duration::from_millis(15));
101-
10278
if i > 99 {
10379
i = 0;
10480
} else {
10581
i = i + 1;
10682
}
107-
}
10883

109-
stop_ch.send(true).unwrap();
110-
tick_thr.join().unwrap();
84+
ui.tick_inc(loop_started.elapsed());
85+
loop_started = Instant::now();
86+
}
11187

11288
Ok(())
11389
}

0 commit comments

Comments
 (0)