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 { fn process(&mut self, _: &Client, _: &ProcessScope) -> Control {
Control::Continue 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. /// Trait for things that may expose JACK ports.

View file

@ -49,7 +49,7 @@ impl ArrangerCli {
arrangement, arrangement,
phrases, phrases,
))); )));
let jack = jack.activate(&arranger.clone(), arranger_jack_callback)?; let jack = jack.activate(&arranger.clone(), Arranger::callback)?;
let jack = Some(jack.into()); let jack = Some(jack.into());
if let Some(ref transport) = arranger.read().unwrap().transport { if let Some(ref transport) = arranger.read().unwrap().transport {
transport.write().unwrap().jack = jack.clone(); transport.write().unwrap().jack = jack.clone();
@ -59,11 +59,3 @@ impl ArrangerCli {
Ok(()) 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 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()); let jack = Some(jack.into());
if let Some(ref transport) = sequencer.read().unwrap().transport { if let Some(ref transport) = sequencer.read().unwrap().transport {
transport.write().unwrap().jack = jack.clone(); transport.write().unwrap().jack = jack.clone();
@ -48,11 +48,3 @@ impl SequencerCli {
Tui::run(sequencer).map(|_|()) 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())); let mut transport = TransportToolbar::new(None, Some(jack.transport()));
transport.focused = true; transport.focused = true;
let transport = Arc::new(RwLock::new(transport)); 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()); transport.write().unwrap().jack = Some(jack.into());
Tui::run(transport)?; Tui::run(transport)?;
Ok(()) Ok(())
} }
fn transport_jack_callback (
state: &Arc<RwLock<TransportToolbar<Tui>>>,
client: &Client,
scope: &ProcessScope,
) -> Control {
state.write().unwrap().process(client, scope)
}