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"
|
||||||
|
|
|
||||||
93
src/main.rs
93
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,32 +14,54 @@ fn main() -> eframe::Result {
|
||||||
let app = MixApp {
|
let app = MixApp {
|
||||||
mix : shared_mix.clone(),
|
mix : shared_mix.clone(),
|
||||||
};
|
};
|
||||||
let options = eframe::NativeOptions {
|
if let Ok((client, _status)) = jack::Client::new("fslcmix", jack::ClientOptions::default()) {
|
||||||
viewport: egui::ViewportBuilder::default()
|
let options = eframe::NativeOptions {
|
||||||
.with_inner_size([500.0, 350.0])
|
viewport: egui::ViewportBuilder::default()
|
||||||
.with_min_inner_size([300.0, 350.0])
|
.with_inner_size([500.0, 350.0])
|
||||||
.with_max_inner_size([5000.0, 350.0]),
|
.with_min_inner_size([300.0, 350.0])
|
||||||
..Default::default()
|
.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_callback = register_jack_callback(&client, shared_mix);
|
||||||
let process = jack::contrib::ClosureProcessHandler::new(process_callback);
|
// Create process and activate the client
|
||||||
let active_client = client.activate_async((), process).unwrap();
|
let process = jack::contrib::ClosureProcessHandler::new(process_callback);
|
||||||
let result = eframe::run_native(
|
let active_client = client.activate_async((), process).unwrap();
|
||||||
"FSLCMix",
|
let result = eframe::run_native(
|
||||||
options,
|
"FSLCMix",
|
||||||
Box::new(|cc| {
|
options,
|
||||||
// Dark theme
|
Box::new(|cc| {
|
||||||
cc.egui_ctx.set_theme(egui::Theme::Dark);
|
// Dark theme
|
||||||
// egui_extras::install_image_loaders(&cc.egui_ctx);
|
cc.egui_ctx.set_theme(egui::Theme::Dark);
|
||||||
Ok(Box::new(app))
|
// egui_extras::install_image_loaders(&cc.egui_ctx);
|
||||||
}),
|
Ok(Box::new(app))
|
||||||
);
|
}),
|
||||||
if let Err(err) = active_client.deactivate() {
|
);
|
||||||
eprintln!("JACK exited with error: {err}");
|
if let Err(err) = active_client.deactivate() {
|
||||||
|
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
|
||||||
}
|
}
|
||||||
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 {
|
||||||
|
|
@ -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