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 = "0.29.1"
|
||||||
egui_flex = "0.1.1"
|
egui_flex = "0.1.1"
|
||||||
jack = "0.13.0"
|
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 PEAK_HOLD_TIME: usize = 4000;
|
||||||
const DECAY_FACTOR: f32 = 0.9999;
|
const DECAY_FACTOR: f32 = 0.9999;
|
||||||
|
|
||||||
use std::sync::{Arc, Mutex};
|
use std::{process::exit, sync::{Arc, Mutex}};
|
||||||
|
|
||||||
fn main() -> eframe::Result {
|
fn main() -> eframe::Result {
|
||||||
let args = Args::parse();
|
let args = Args::parse();
|
||||||
|
|
@ -14,6 +14,7 @@ fn main() -> eframe::Result {
|
||||||
let app = MixApp {
|
let app = MixApp {
|
||||||
mix : shared_mix.clone(),
|
mix : shared_mix.clone(),
|
||||||
};
|
};
|
||||||
|
if let Ok((client, _status)) = jack::Client::new("fslcmix", jack::ClientOptions::default()) {
|
||||||
let options = eframe::NativeOptions {
|
let options = eframe::NativeOptions {
|
||||||
viewport: egui::ViewportBuilder::default()
|
viewport: egui::ViewportBuilder::default()
|
||||||
.with_inner_size([500.0, 350.0])
|
.with_inner_size([500.0, 350.0])
|
||||||
|
|
@ -21,7 +22,7 @@ fn main() -> eframe::Result {
|
||||||
.with_max_inner_size([5000.0, 350.0]),
|
.with_max_inner_size([5000.0, 350.0]),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
let (client, _status) = jack::Client::new("fslcmix", jack::ClientOptions::default()).unwrap();
|
|
||||||
let process_callback = register_jack_callback(&client, shared_mix);
|
let process_callback = register_jack_callback(&client, shared_mix);
|
||||||
// Create process and activate the client
|
// Create process and activate the client
|
||||||
let process = jack::contrib::ClosureProcessHandler::new(process_callback);
|
let process = jack::contrib::ClosureProcessHandler::new(process_callback);
|
||||||
|
|
@ -41,6 +42,27 @@ fn main() -> eframe::Result {
|
||||||
}
|
}
|
||||||
result
|
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 {
|
fn register_jack_callback(client: &jack::Client, mixer: Arc<Mutex<FslcMix>>) -> impl FnMut(&jack::Client, &jack::ProcessScope) -> jack::Control {
|
||||||
let unlocked_mixer = mixer.lock().unwrap();
|
let unlocked_mixer = mixer.lock().unwrap();
|
||||||
|
|
@ -71,6 +93,25 @@ fn db_rms(val : f32) -> f32 {
|
||||||
10.0 * val.log10()
|
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 {
|
struct MixApp {
|
||||||
mix: Arc<Mutex<FslcMix>>,
|
mix: Arc<Mutex<FslcMix>>,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue