callback api for tracks and devices

This commit is contained in:
🪞👃🪞 2024-07-04 20:46:31 +03:00
parent f2774e67a6
commit f928b026ed
3 changed files with 62 additions and 37 deletions

View file

@ -121,11 +121,22 @@ impl Track {
write_midi_output(&mut self.midi_out.writer(scope), &output, frames);
}
pub fn add_device (
&mut self, device: JackDevice
) -> &mut JackDevice {
&mut self,
mut device: JackDevice,
) -> Usually<&mut JackDevice> {
self.devices.push(device);
let index = self.devices.len() - 1;
&mut self.devices[index]
Ok(&mut self.devices[index])
}
pub fn add_device_with_cb (
&mut self,
mut device: JackDevice,
init: impl Fn(&Self, &mut JackDevice)->Usually<()>
) -> Usually<&mut JackDevice> {
init(&self, &mut device)?;
self.devices.push(device);
let index = self.devices.len() - 1;
Ok(&mut self.devices[index])
}
pub fn get_device (&self, i: usize) -> Option<MutexGuard<Box<dyn Device>>> {
self.devices.get(i).map(|d|d.state.lock().unwrap())