From 80964d5b4acbccacbe2fdba3daa0a3e902868e3e Mon Sep 17 00:00:00 2001 From: unspeaker Date: Thu, 1 May 2025 01:19:01 +0300 Subject: [PATCH] jack: add Port::close --- crates/jack/src/jack_client.rs | 5 +++-- crates/jack/src/jack_port.rs | 11 ++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/crates/jack/src/jack_client.rs b/crates/jack/src/jack_client.rs index 80b97587..ad89c7ae 100644 --- a/crates/jack/src/jack_client.rs +++ b/crates/jack/src/jack_client.rs @@ -55,7 +55,7 @@ impl HasJack for &Jack { /// Wraps [JackState] and through it [jack::Client]. #[derive(Clone, Debug, Default)] pub struct Jack { - state: Arc> + pub state: Arc> } impl Jack { @@ -99,7 +99,8 @@ impl Jack { /// This is a connection which may be [Inactive], [Activating], or [Active]. /// In the [Active] and [Inactive] states, [JackState::client] returns a /// [jack::Client], which you can use to talk to the JACK API. -#[derive(Debug, Default)] enum JackState { +#[derive(Debug, Default)] +pub enum JackState { /// Unused #[default] Inert, /// Before activation. diff --git a/crates/jack/src/jack_port.rs b/crates/jack/src/jack_port.rs index a5f474ec..5c34b748 100644 --- a/crates/jack/src/jack_port.rs +++ b/crates/jack/src/jack_port.rs @@ -14,9 +14,6 @@ macro_rules! impl_port { } impl AsRef> for $Name { fn as_ref (&self) -> &Port<$Spec> { &self.port } } impl $Name { - pub fn name (&self) -> &Arc { &self.name } - pub fn port (&self) -> &Port<$Spec> { &self.port } - pub fn port_mut (&mut self) -> &mut Port<$Spec> { &mut self.port } pub fn new ($jack: &Jack, name: impl AsRef, connect: &[PortConnect]) -> Usually { @@ -29,6 +26,14 @@ macro_rules! impl_port { port.connect_to_matching()?; Ok(port) } + pub fn name (&self) -> &Arc { &self.name } + pub fn port (&self) -> &Port<$Spec> { &self.port } + pub fn port_mut (&mut self) -> &mut Port<$Spec> { &mut self.port } + pub fn into_port (self) -> Port<$Spec> { self.port } + pub fn close (self) -> Usually<()> { + let Self { jack, port, .. } = self; + Ok(jack.with_client(|client|client.unregister_port(port))?) + } } impl HasJack for $Name { fn jack (&self) -> &Jack { &self.jack } } impl JackPort for $Name {