Feat: fixing stderr catching and scope not drawing completely

This commit is contained in:
2026-02-23 21:53:53 +01:00
parent e7137cc7ed
commit 502f7afe8f
4 changed files with 31 additions and 4 deletions

View File

@@ -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| {