From 8d534fc738aaf7aa2fa66af8378083eed894129a Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sun, 27 Oct 2024 03:22:03 +0300 Subject: [PATCH] wip: add Audio::callback --- crates/tek_core/src/audio.rs | 5 +++++ crates/tek_sequencer/src/arranger_cli.rs | 10 +--------- crates/tek_sequencer/src/sequencer_cli.rs | 10 +--------- crates/tek_sequencer/src/transport_cli.rs | 10 +--------- 4 files changed, 8 insertions(+), 27 deletions(-) diff --git a/crates/tek_core/src/audio.rs b/crates/tek_core/src/audio.rs index 8fd1081f..8645cad1 100644 --- a/crates/tek_core/src/audio.rs +++ b/crates/tek_core/src/audio.rs @@ -6,6 +6,11 @@ pub trait Audio { fn process(&mut self, _: &Client, _: &ProcessScope) -> Control { Control::Continue } + fn callback( + state: &Arc>, client: &Client, scope: &ProcessScope + ) -> Control where Self: Sized { + state.write().unwrap().process(client, scope) + } } /// Trait for things that may expose JACK ports. diff --git a/crates/tek_sequencer/src/arranger_cli.rs b/crates/tek_sequencer/src/arranger_cli.rs index f3ac2798..43adcf0a 100644 --- a/crates/tek_sequencer/src/arranger_cli.rs +++ b/crates/tek_sequencer/src/arranger_cli.rs @@ -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>>, - client: &Client, - scope: &ProcessScope, -) -> Control { - state.write().unwrap().process(client, scope) -} diff --git a/crates/tek_sequencer/src/sequencer_cli.rs b/crates/tek_sequencer/src/sequencer_cli.rs index 45f47ea3..a1fa36fe 100644 --- a/crates/tek_sequencer/src/sequencer_cli.rs +++ b/crates/tek_sequencer/src/sequencer_cli.rs @@ -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>>, - client: &Client, - scope: &ProcessScope, -) -> Control { - state.write().unwrap().process(client, scope) -} diff --git a/crates/tek_sequencer/src/transport_cli.rs b/crates/tek_sequencer/src/transport_cli.rs index 15db296d..508c5978 100644 --- a/crates/tek_sequencer/src/transport_cli.rs +++ b/crates/tek_sequencer/src/transport_cli.rs @@ -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>>, - client: &Client, - scope: &ProcessScope, -) -> Control { - state.write().unwrap().process(client, scope) -}