@@ -9,9 +9,7 @@ use lvgl::widgets::{Arc, Label, LabelAlign};
99use lvgl:: { self , Align , Color , Part , State , UI } ;
1010use lvgl:: { LvError , Widget } ;
1111use 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
1614fn 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}
0 commit comments