Feat: fixing stderr catching and scope not drawing completely
This commit is contained in:
@@ -158,6 +158,7 @@ struct CagireDesktop {
|
||||
_stream: Option<cpal::Stream>,
|
||||
_analysis_handle: Option<AnalysisHandle>,
|
||||
midi_rx: Receiver<MidiCommand>,
|
||||
stream_error_rx: crossbeam_channel::Receiver<String>,
|
||||
current_font: FontChoice,
|
||||
zoom_factor: f32,
|
||||
fullscreen: bool,
|
||||
@@ -201,6 +202,7 @@ impl CagireDesktop {
|
||||
_stream: b.stream,
|
||||
_analysis_handle: b.analysis_handle,
|
||||
midi_rx: b.midi_rx,
|
||||
stream_error_rx: b.stream_error_rx,
|
||||
current_font,
|
||||
zoom_factor,
|
||||
fullscreen: false,
|
||||
@@ -235,6 +237,9 @@ impl CagireDesktop {
|
||||
max_voices: self.app.audio.config.max_voices,
|
||||
};
|
||||
|
||||
let (new_error_tx, new_error_rx) = crossbeam_channel::bounded(16);
|
||||
self.stream_error_rx = new_error_rx;
|
||||
|
||||
let mut restart_samples = Vec::new();
|
||||
for path in &self.app.audio.config.sample_paths {
|
||||
let index = doux::sampling::scan_samples_dir(path);
|
||||
@@ -257,6 +262,7 @@ impl CagireDesktop {
|
||||
Arc::clone(&self.metrics),
|
||||
restart_samples,
|
||||
Arc::clone(&self.audio_sample_pos),
|
||||
new_error_tx,
|
||||
) {
|
||||
Ok((new_stream, info, new_analysis, registry)) => {
|
||||
self._stream = Some(new_stream);
|
||||
@@ -350,6 +356,11 @@ impl CagireDesktop {
|
||||
impl eframe::App for CagireDesktop {
|
||||
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
|
||||
self.handle_audio_restart();
|
||||
|
||||
while let Ok(err) = self.stream_error_rx.try_recv() {
|
||||
self.app.ui.flash(&err, 3000, cagire::state::FlashKind::Error);
|
||||
}
|
||||
|
||||
self.update_metrics();
|
||||
|
||||
ctx.input(|i| {
|
||||
|
||||
Reference in New Issue
Block a user