mirror of
				https://github.com/Xetibo/ReSet.git
				synced 2025-11-04 01:35:20 +01:00 
			
		
		
		
	fix: spinloop until listener ready
This commit is contained in:
		
							parent
							
								
									248fc9f526
								
							
						
					
					
						commit
						c2557a714f
					
				
					 3 changed files with 19 additions and 6 deletions
				
			
		| 
						 | 
					@ -426,6 +426,11 @@ pub fn start_event_listener(listeners: Arc<Listeners>, wifi_box: Arc<WifiBox>) {
 | 
				
			||||||
                        let imp = entry.1.imp();
 | 
					                        let imp = entry.1.imp();
 | 
				
			||||||
                        let mut connected = imp.connected.borrow_mut();
 | 
					                        let mut connected = imp.connected.borrow_mut();
 | 
				
			||||||
                        *connected = imp.access_point.borrow().dbus_path == current_device.path;
 | 
					                        *connected = imp.access_point.borrow().dbus_path == current_device.path;
 | 
				
			||||||
 | 
					                        if *connected {
 | 
				
			||||||
 | 
					                            imp.reset_wifi_connected.set_text("Connected");
 | 
				
			||||||
 | 
					                        } else {
 | 
				
			||||||
 | 
					                            imp.reset_wifi_connected.set_text("");
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,9 @@
 | 
				
			||||||
use gtk::prelude::FrameExt;
 | 
					use gtk::prelude::FrameExt;
 | 
				
			||||||
use std::cell::RefCell;
 | 
					use std::cell::RefCell;
 | 
				
			||||||
 | 
					use std::hint::spin_loop;
 | 
				
			||||||
use std::rc::Rc;
 | 
					use std::rc::Rc;
 | 
				
			||||||
use std::sync::Arc;
 | 
					use std::sync::Arc;
 | 
				
			||||||
 | 
					use std::sync::atomic::Ordering;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::components::base::setting_box::SettingBox;
 | 
					use crate::components::base::setting_box::SettingBox;
 | 
				
			||||||
use crate::components::base::utils::{start_audio_listener, Listeners, Position};
 | 
					use crate::components::base::utils::{start_audio_listener, Listeners, Position};
 | 
				
			||||||
| 
						 | 
					@ -73,10 +75,13 @@ pub const HANDLE_AUDIO_CLICK: fn(Arc<Listeners>, FlowBox, Rc<RefCell<Position>>)
 | 
				
			||||||
        let audio_output = Arc::new(SinkBox::new());
 | 
					        let audio_output = Arc::new(SinkBox::new());
 | 
				
			||||||
        let audio_input = Arc::new(SourceBox::new());
 | 
					        let audio_input = Arc::new(SourceBox::new());
 | 
				
			||||||
        start_audio_listener(
 | 
					        start_audio_listener(
 | 
				
			||||||
            listeners,
 | 
					            listeners.clone(),
 | 
				
			||||||
            Some(audio_output.clone()),
 | 
					            Some(audio_output.clone()),
 | 
				
			||||||
            Some(audio_input.clone()),
 | 
					            Some(audio_input.clone()),
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					        if !listeners.pulse_listener.load(Ordering::SeqCst) {
 | 
				
			||||||
 | 
					            spin_loop();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        populate_sinks(audio_output.clone());
 | 
					        populate_sinks(audio_output.clone());
 | 
				
			||||||
        populate_sources(audio_input.clone());
 | 
					        populate_sources(audio_input.clone());
 | 
				
			||||||
        let sink_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_output));
 | 
					        let sink_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_output));
 | 
				
			||||||
| 
						 | 
					@ -93,7 +98,10 @@ pub const HANDLE_VOLUME_CLICK: fn(Arc<Listeners>, FlowBox, Rc<RefCell<Position>>
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        let audio_output = Arc::new(SinkBox::new());
 | 
					        let audio_output = Arc::new(SinkBox::new());
 | 
				
			||||||
        start_audio_listener(listeners, Some(audio_output.clone()), None);
 | 
					        start_audio_listener(listeners.clone(), Some(audio_output.clone()), None);
 | 
				
			||||||
 | 
					        if !listeners.pulse_listener.load(Ordering::SeqCst) {
 | 
				
			||||||
 | 
					            spin_loop();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        populate_sinks(audio_output.clone());
 | 
					        populate_sinks(audio_output.clone());
 | 
				
			||||||
        let audio_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_output));
 | 
					        let audio_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_output));
 | 
				
			||||||
        reset_main.remove_all();
 | 
					        reset_main.remove_all();
 | 
				
			||||||
| 
						 | 
					@ -107,7 +115,10 @@ pub const HANDLE_MICROPHONE_CLICK: fn(Arc<Listeners>, FlowBox, Rc<RefCell<Positi
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        let audio_input = Arc::new(SourceBox::new());
 | 
					        let audio_input = Arc::new(SourceBox::new());
 | 
				
			||||||
        start_audio_listener(listeners, None, Some(audio_input.clone()));
 | 
					        start_audio_listener(listeners.clone(), None, Some(audio_input.clone()));
 | 
				
			||||||
 | 
					        if !listeners.pulse_listener.load(Ordering::SeqCst) {
 | 
				
			||||||
 | 
					            spin_loop();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        populate_sources(audio_input.clone());
 | 
					        populate_sources(audio_input.clone());
 | 
				
			||||||
        let source_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_input));
 | 
					        let source_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_input));
 | 
				
			||||||
        reset_main.remove_all();
 | 
					        reset_main.remove_all();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +25,3 @@ row.audioRow  {
 | 
				
			||||||
    border-color: transparent;
 | 
					    border-color: transparent;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
flowboxchild {
 | 
					 | 
				
			||||||
  max-width: 800px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue