From 4065b274f56fc1e86669b59187789dc49fec52f4 Mon Sep 17 00:00:00 2001 From: Niels Geens Date: Mon, 18 Aug 2025 10:38:59 +0200 Subject: [PATCH] Use Xrun error instead of panic --- audio_engine/src/metronome.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/audio_engine/src/metronome.rs b/audio_engine/src/metronome.rs index ef923cc..f07489d 100644 --- a/audio_engine/src/metronome.rs +++ b/audio_engine/src/metronome.rs @@ -113,7 +113,7 @@ impl Metronome { // Verify only one beat was missed let beat_after_next = next_beat_frame.wrapping_add(self.frames_per_beat as u32); if beat_after_next <= missed_end { - panic!("Multiple beats missed during xrun"); + return Err(LooperError::Xrun(std::panic::Location::caller())); } beat_in_missed = Some((next_beat_frame - missed_start) as u32); @@ -539,7 +539,6 @@ mod tests { } #[test] - #[should_panic(expected = "Multiple beats missed during xrun")] fn test_multiple_beats_in_xrun_panics() { let mut metronome = create_test_metronome(50); // Fast tempo let (osc, _osc_rx) = create_osc_controller(); @@ -553,7 +552,7 @@ mod tests { // Jump from frame 25 to frame 200, missing multiple beats let mut backend = create_mock_audio_backend(10, 200, &audio_input, &mut audio_output, &mut click_output); - metronome.process(&mut backend, &osc).unwrap(); + assert!(metronome.process(&mut backend, &osc).is_err()); } #[test]