nice error message now
This commit is contained in:
parent
03d7286eca
commit
c728c54c29
2 changed files with 68 additions and 26 deletions
|
|
@ -9,3 +9,4 @@ eframe = "0.29.1"
|
|||
egui = "0.29.1"
|
||||
egui_flex = "0.1.1"
|
||||
jack = "0.13.0"
|
||||
native-dialog = "0.7.0"
|
||||
|
|
|
|||
45
src/main.rs
45
src/main.rs
|
|
@ -6,7 +6,7 @@ use eframe::egui::*;
|
|||
const PEAK_HOLD_TIME: usize = 4000;
|
||||
const DECAY_FACTOR: f32 = 0.9999;
|
||||
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::{process::exit, sync::{Arc, Mutex}};
|
||||
|
||||
fn main() -> eframe::Result {
|
||||
let args = Args::parse();
|
||||
|
|
@ -14,6 +14,7 @@ fn main() -> eframe::Result {
|
|||
let app = MixApp {
|
||||
mix : shared_mix.clone(),
|
||||
};
|
||||
if let Ok((client, _status)) = jack::Client::new("fslcmix", jack::ClientOptions::default()) {
|
||||
let options = eframe::NativeOptions {
|
||||
viewport: egui::ViewportBuilder::default()
|
||||
.with_inner_size([500.0, 350.0])
|
||||
|
|
@ -21,7 +22,7 @@ fn main() -> eframe::Result {
|
|||
.with_max_inner_size([5000.0, 350.0]),
|
||||
..Default::default()
|
||||
};
|
||||
let (client, _status) = jack::Client::new("fslcmix", jack::ClientOptions::default()).unwrap();
|
||||
|
||||
let process_callback = register_jack_callback(&client, shared_mix);
|
||||
// Create process and activate the client
|
||||
let process = jack::contrib::ClosureProcessHandler::new(process_callback);
|
||||
|
|
@ -40,6 +41,27 @@ fn main() -> eframe::Result {
|
|||
eprintln!("JACK exited with error: {err}");
|
||||
}
|
||||
result
|
||||
}
|
||||
else {
|
||||
eprintln!("Could not connect to JACK Audio Server.");
|
||||
let options = eframe::NativeOptions {
|
||||
viewport: egui::ViewportBuilder::default()
|
||||
.with_inner_size([150.0, 80.0])
|
||||
.with_min_inner_size([150.0, 80.0])
|
||||
.with_max_inner_size([150.0, 80.0]),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let result = eframe::run_native(
|
||||
"Error - FSLCMix",
|
||||
options,
|
||||
Box::new(|cc| {
|
||||
cc.egui_ctx.set_theme(egui::Theme::Dark);
|
||||
Ok(Box::new(ErrorBox { text: "Could not connect to JACK Audio Server".to_owned(), }))
|
||||
}),
|
||||
);
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
fn register_jack_callback(client: &jack::Client, mixer: Arc<Mutex<FslcMix>>) -> impl FnMut(&jack::Client, &jack::ProcessScope) -> jack::Control {
|
||||
|
|
@ -71,6 +93,25 @@ fn db_rms(val : f32) -> f32 {
|
|||
10.0 * val.log10()
|
||||
}
|
||||
|
||||
struct ErrorBox {
|
||||
text: String,
|
||||
}
|
||||
|
||||
impl eframe::App for ErrorBox {
|
||||
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
|
||||
egui::CentralPanel::default().show(ctx, |ui| {
|
||||
ui.vertical(|ui| {
|
||||
ui.label(&self.text);
|
||||
ui.horizontal(|ui| {
|
||||
if ui.button("Okay").clicked() {
|
||||
exit(1);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
struct MixApp {
|
||||
mix: Arc<Mutex<FslcMix>>,
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue