wip: add Audio::callback

This commit is contained in:
🪞👃🪞 2024-10-27 03:22:03 +03:00
parent ec2c96d00e
commit 8d534fc738
4 changed files with 8 additions and 27 deletions

View file

@ -6,6 +6,11 @@ pub trait Audio {
fn process(&mut self, _: &Client, _: &ProcessScope) -> Control {
Control::Continue
}
fn callback(
state: &Arc<RwLock<Self>>, client: &Client, scope: &ProcessScope
) -> Control where Self: Sized {
state.write().unwrap().process(client, scope)
}
}
/// Trait for things that may expose JACK ports.

View file

@ -49,7 +49,7 @@ impl ArrangerCli {
arrangement,
phrases,
)));
let jack = jack.activate(&arranger.clone(), arranger_jack_callback)?;
let jack = jack.activate(&arranger.clone(), Arranger::callback)?;
let jack = Some(jack.into());
if let Some(ref transport) = arranger.read().unwrap().transport {
transport.write().unwrap().jack = jack.clone();
@ -59,11 +59,3 @@ impl ArrangerCli {
Ok(())
}
}
fn arranger_jack_callback (
state: &Arc<RwLock<Arranger<Tui>>>,
client: &Client,
scope: &ProcessScope,
) -> Control {
state.write().unwrap().process(client, scope)
}

View file

@ -39,7 +39,7 @@ impl SequencerCli {
//}
}
let sequencer = Arc::new(RwLock::new(sequencer));
let jack = jack.activate(&sequencer.clone(), sequencer_jack_callback)?;
let jack = jack.activate(&sequencer.clone(), Sequencer::callback)?;
let jack = Some(jack.into());
if let Some(ref transport) = sequencer.read().unwrap().transport {
transport.write().unwrap().jack = jack.clone();
@ -48,11 +48,3 @@ impl SequencerCli {
Tui::run(sequencer).map(|_|())
}
}
fn sequencer_jack_callback (
state: &Arc<RwLock<Sequencer<Tui>>>,
client: &Client,
scope: &ProcessScope,
) -> Control {
state.write().unwrap().process(client, scope)
}

View file

@ -7,16 +7,8 @@ pub fn main () -> Usually<()> {
let mut transport = TransportToolbar::new(None, Some(jack.transport()));
transport.focused = true;
let transport = Arc::new(RwLock::new(transport));
let jack = jack.activate(&transport.clone(), transport_jack_callback)?;
let jack = jack.activate(&transport.clone(), TransportToolbar::callback)?;
transport.write().unwrap().jack = Some(jack.into());
Tui::run(transport)?;
Ok(())
}
fn transport_jack_callback (
state: &Arc<RwLock<TransportToolbar<Tui>>>,
client: &Client,
scope: &ProcessScope,
) -> Control {
state.write().unwrap().process(client, scope)
}