@@ -46,6 +46,7 @@ fn split(payload: &str) -> Vec<f32> {
4646}
4747
4848fn main_thread (
49+ sync_tx : Sender < bool > ,
4950 data_lock : Arc < RwLock < DataContainer > > ,
5051 print_lock : Arc < RwLock < Vec < Print > > > ,
5152 raw_data_rx : Receiver < Packet > ,
@@ -65,6 +66,7 @@ fn main_thread(
6566
6667 if let Ok ( packet) = raw_data_rx. recv_timeout ( Duration :: from_millis ( 1 ) ) {
6768 if !packet. payload . is_empty ( ) {
69+ sync_tx. send ( true ) . expect ( "unable to send sync tx" ) ;
6870 data. raw_traffic . push ( packet. clone ( ) ) ;
6971 let split_data = split ( & packet. payload ) ;
7072 if data. dataset . is_empty ( ) || failed_format_counter > 10 {
@@ -134,6 +136,7 @@ fn main() {
134136 let ( send_tx, send_rx) : ( Sender < String > , Receiver < String > ) = mpsc:: channel ( ) ;
135137 let ( clear_tx, clear_rx) : ( Sender < bool > , Receiver < bool > ) = mpsc:: channel ( ) ;
136138 let ( raw_data_tx, raw_data_rx) : ( Sender < Packet > , Receiver < Packet > ) = mpsc:: channel ( ) ;
139+ let ( sync_tx, sync_rx) : ( Sender < bool > , Receiver < bool > ) = mpsc:: channel ( ) ;
137140
138141 let serial_device_lock = device_lock. clone ( ) ;
139142 let serial_devices_lock = devices_lock. clone ( ) ;
@@ -158,6 +161,7 @@ fn main() {
158161 println ! ( "starting main thread.." ) ;
159162 let _main_thread_handler = thread:: spawn ( || {
160163 main_thread (
164+ sync_tx,
161165 main_data_lock,
162166 main_print_lock,
163167 raw_data_rx,
@@ -191,6 +195,15 @@ fn main() {
191195 egui_phosphor:: add_to_fonts ( & mut fonts, egui_phosphor:: Variant :: Regular ) ;
192196 _cc. egui_ctx . set_fonts ( fonts) ;
193197 _cc. egui_ctx . set_visuals ( Visuals :: dark ( ) ) ;
198+
199+ let repaint_signal = _cc. egui_ctx . clone ( ) ;
200+ thread:: spawn ( move || loop {
201+ if let Ok ( _) = sync_rx. recv ( ) {
202+ println ! ( "requested repaint!" ) ;
203+ repaint_signal. request_repaint ( ) ;
204+ }
205+ } ) ;
206+
194207 Ok ( Box :: new ( MyApp :: new (
195208 gui_print_lock,
196209 gui_data_lock,
0 commit comments