use crate::common::spsc::{GcItem, GcOverflowBuffer, RtStatusFlags};
use crate::dsp::cabsim::conv::ConvEngine;
use rtrb::Consumer;
#[inline(always)]
pub fn drain_cabsims(
cabsim_consumer: &mut Consumer<Option<Box<ConvEngine>>>,
active_cabsim: &mut Option<Box<ConvEngine>>,
gc_producer: &mut rtrb::Producer<GcItem>,
parking_lot: &mut [Option<GcItem>; 16],
gc_overflow_for_process: &GcOverflowBuffer,
rt_status_for_process: &RtStatusFlags,
) {
while let Ok(new_engine) = cabsim_consumer.pop() {
let old_engine = std::mem::replace(active_cabsim, new_engine);
if let Some(old) = old_engine {
crate::common::spsc::gc_cascade(
Some(GcItem::CabConvEngine(old)),
gc_producer,
parking_lot,
gc_overflow_for_process,
rt_status_for_process,
);
}
}
}