Use Xrun error instead of panic

This commit is contained in:
Niels Geens 2025-08-18 10:38:59 +02:00
parent 8360429954
commit 4065b274f5

View File

@ -113,7 +113,7 @@ impl Metronome {
// Verify only one beat was missed // Verify only one beat was missed
let beat_after_next = next_beat_frame.wrapping_add(self.frames_per_beat as u32); let beat_after_next = next_beat_frame.wrapping_add(self.frames_per_beat as u32);
if beat_after_next <= missed_end { 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); beat_in_missed = Some((next_beat_frame - missed_start) as u32);
@ -539,7 +539,6 @@ mod tests {
} }
#[test] #[test]
#[should_panic(expected = "Multiple beats missed during xrun")]
fn test_multiple_beats_in_xrun_panics() { fn test_multiple_beats_in_xrun_panics() {
let mut metronome = create_test_metronome(50); // Fast tempo let mut metronome = create_test_metronome(50); // Fast tempo
let (osc, _osc_rx) = create_osc_controller(); let (osc, _osc_rx) = create_osc_controller();
@ -553,7 +552,7 @@ mod tests {
// Jump from frame 25 to frame 200, missing multiple beats // 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); 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] #[test]