From ca1a6d443e9ff2d1dbca362d2a9b4689bf39c59c Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Tue, 13 Oct 2026 05:31:48 -0400 Subject: [PATCH] Fix build after merging main into #306 Co-Authored-By: Claude Opus 5.5 --- crates/mix/src/lib.rs | 18 ++++++++++++------ crates/playback/src/lib.rs | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/crates/mix/src/lib.rs b/crates/mix/src/lib.rs index 12784e0f..ee40bda4 100644 --- a/crates/mix/src/lib.rs +++ b/crates/mix/src/lib.rs @@ -2414,6 +2414,7 @@ mod tests { /// A built-in gain behind a third-party id, with a log of parameter sets. struct Stateful { inner: Box, + blob: Vec, sets: Arc, } @@ -2437,6 +2438,10 @@ mod tests { fn process(&mut self, io: &mut [Vec], frames: usize) { self.inner.process(io, frames); } + fn state_reader(&mut self) -> Option> { + let blob = self.blob.clone(); + Some(Box::new(move || Some(blob.clone()))) + } } struct Clock { @@ -2614,9 +2619,9 @@ mod tests { let sets = Arc::new(std::sync::atomic::AtomicUsize::new(0)); let mut gain = soundcraft_dsp::create("gain").unwrap(); gain.prepare(48_000.0, 512, 1); - let fake = Stateful { inner: gain, sets: Arc::clone(&sets) }; + let fake = Stateful { inner: gain, blob: Vec::new(), sets: Arc::clone(&sets) }; // An instance for the wrong channel count is retired, not used. - let wrong = Stateful { inner: soundcraft_dsp::create("gain").unwrap(), sets: Arc::clone(&sets) }; + let wrong = Stateful { inner: soundcraft_dsp::create("gain").unwrap(), blob: Vec::new(), sets: Arc::clone(&sets) }; eng.adopt(vec![PreparedInstance { track: t, slot: 0, id: "clap:test.fake".into(), ch: 2, plugin: Box::new(wrong) }]); assert!(render_block(&mut eng, &s, 512) > 0.3); assert_eq!(eng.take_retired().len(), 1); @@ -2724,11 +2729,12 @@ mod tests { }; eng.adopt(vec![PreparedInstance { track: t, slot: 0, id: "clap:test.fake".into(), ch: 1, plugin: make(b"old") }]); render_block(&mut eng, &s, 0); - assert_eq!(eng.capture_states(), vec![(t, 0, b"old".to_vec())]); + assert!(eng.take_retired().is_empty()); eng.adopt(vec![PreparedInstance { track: t, slot: 0, id: "clap:test.fake".into(), ch: 1, plugin: make(b"new") }]); render_block(&mut eng, &s, 512); - assert_eq!(eng.capture_states(), vec![(t, 0, b"new".to_vec())]); - assert_eq!(eng.take_retired().len(), 1, "the old instance is retired"); + let mut retired = eng.take_retired(); + assert_eq!(retired.len(), 1, "the old instance is retired"); + assert_eq!(retired[0].save_state(), Some(b"old".to_vec()), "the new instance stays"); } #[test] @@ -2742,7 +2748,7 @@ mod tests { let mut eng = MixEngine::new(48_000.0, 512); eng.set_external_instances(true); let sets = Arc::new(std::sync::atomic::AtomicUsize::new(0)); - let fake = Stateful { inner: soundcraft_dsp::create("gain").unwrap(), sets: Arc::clone(&sets) }; + let fake = Stateful { inner: soundcraft_dsp::create("gain").unwrap(), blob: Vec::new(), sets: Arc::clone(&sets) }; eng.adopt(vec![PreparedInstance { track: t, slot: 0, id: "vst3:00000000000000000000000000000001".into(), ch: 1, plugin: Box::new(fake) }]); render_block(&mut eng, &s, 0); assert_eq!(sets.load(std::sync::atomic::Ordering::Relaxed), 1, "session params apply once"); diff --git a/crates/playback/src/lib.rs b/crates/playback/src/lib.rs index 73d8394b..f52d3c93 100644 --- a/crates/playback/src/lib.rs +++ b/crates/playback/src/lib.rs @@ -1118,7 +1118,7 @@ mod tests { let (tx, rx) = channel(); let (gtx, grx) = channel(); let mut st = AudioState::new(rx, shared, Arc::new(soundcraft_model::Session::default()), 48_000.0, gtx); - let mut side = Side { shadow: HashMap::new(), rate: 48_000.0, editors: HashMap::new(), garbage: grx, old_sessions: None }; + let mut side = Side::new(48_000.0, grx); side.return_old_sessions(&tx); let mut out = vec![0.0f32; 256]; let mut watched = Vec::new();