opt: add join handler to prevent server stopped

This commit is contained in:
Kingtous 2022-11-04 19:28:30 +08:00
parent 220d056760
commit 821f042fd9
2 changed files with 5 additions and 4 deletions

View File

@ -158,10 +158,12 @@ pub fn core_main() -> Option<Vec<String>> {
std::thread::spawn(move || crate::start_server(true));
// to-do: for flutter, starting tray not ready yet, or we can reuse sciter's tray implementation.
}
#[cfg(all(target_os = "linux", feature = "flutter"))]
#[cfg(all(target_os = "linux"))]
{
std::thread::spawn(move || crate::start_server(true));
let handler = std::thread::spawn(move || crate::start_server(true));
crate::tray::start_tray(crate::ui_interface::OPTIONS.clone());
// revent server exit when encountering errors from tray
handler.join();
}
} else if args[0] == "--import-config" {
if args.len() == 2 {

View File

@ -91,7 +91,6 @@ pub fn start_tray(options: Arc<Mutex<HashMap<String, String>>>) {
// init gtk context
if let Err(err) = gtk::init() {
error!("Error when starting the tray: {}", err);
gtk::main_quit();
return;
}
if let Some(mut appindicator) = get_default_app_indicator() {
@ -116,7 +115,7 @@ pub fn start_tray(options: Arc<Mutex<HashMap<String, String>>>) {
info!("Setting tray event loop");
gtk::main();
} else {
eprintln!("tray process exit now");
error!("Tray process exit now");
}
}