@@ -46,6 +46,7 @@ fn split(payload: &str) -> Vec<f32> {
46
46
}
47
47
48
48
fn main_thread (
49
+ sync_tx : Sender < bool > ,
49
50
data_lock : Arc < RwLock < DataContainer > > ,
50
51
print_lock : Arc < RwLock < Vec < Print > > > ,
51
52
raw_data_rx : Receiver < Packet > ,
@@ -70,6 +71,7 @@ fn main_thread(
70
71
71
72
if let Ok ( packet) = raw_data_rx. recv_timeout ( Duration :: from_millis ( 1 ) ) {
72
73
if !packet. payload . is_empty ( ) {
74
+ sync_tx. send ( true ) . expect ( "unable to send sync tx" ) ;
73
75
data. raw_traffic . push ( packet. clone ( ) ) ;
74
76
let split_data = split ( & packet. payload ) ;
75
77
if data. dataset . is_empty ( ) || failed_format_counter > 10 {
@@ -150,6 +152,7 @@ fn main() {
150
152
let ( clear_tx, clear_rx) : ( Sender < bool > , Receiver < bool > ) = mpsc:: channel ( ) ;
151
153
let ( names_tx, names_rx) : ( Sender < Vec < String > > , Receiver < Vec < String > > ) = mpsc:: channel ( ) ;
152
154
let ( raw_data_tx, raw_data_rx) : ( Sender < Packet > , Receiver < Packet > ) = mpsc:: channel ( ) ;
155
+ let ( sync_tx, sync_rx) : ( Sender < bool > , Receiver < bool > ) = mpsc:: channel ( ) ;
153
156
154
157
let serial_device_lock = device_lock. clone ( ) ;
155
158
let serial_devices_lock = devices_lock. clone ( ) ;
@@ -174,6 +177,7 @@ fn main() {
174
177
println ! ( "starting main thread.." ) ;
175
178
let _main_thread_handler = thread:: spawn ( || {
176
179
main_thread (
180
+ sync_tx,
177
181
main_data_lock,
178
182
main_print_lock,
179
183
raw_data_rx,
@@ -208,6 +212,15 @@ fn main() {
208
212
egui_phosphor:: add_to_fonts ( & mut fonts, egui_phosphor:: Variant :: Regular ) ;
209
213
_cc. egui_ctx . set_fonts ( fonts) ;
210
214
_cc. egui_ctx . set_visuals ( Visuals :: dark ( ) ) ;
215
+
216
+ let repaint_signal = _cc. egui_ctx . clone ( ) ;
217
+ thread:: spawn ( move || loop {
218
+ if let Ok ( _) = sync_rx. recv ( ) {
219
+ println ! ( "requested repaint!" ) ;
220
+ repaint_signal. request_repaint ( ) ;
221
+ }
222
+ } ) ;
223
+
211
224
Ok ( Box :: new ( MyApp :: new (
212
225
gui_print_lock,
213
226
gui_data_lock,
0 commit comments