#[allow(deprecated)]
pub use crate::client::ClosureProcessHandler;
pub use crate::client::{
AsyncClient, Client, ClientOptions, ClientStatus, CycleTimes, InternalClientID,
NotificationHandler, ProcessHandler, ProcessScope, CLIENT_NAME_SIZE,
};
pub use crate::jack_enums::{Control, Error, LatencyType};
pub use crate::logging::{set_logger, LoggerType};
pub use crate::port::{
AudioIn, AudioOut, MidiIn, MidiIter, MidiOut, MidiWriter, Port, PortFlags, PortSpec, RawMidi,
Unowned, PORT_NAME_SIZE, PORT_TYPE_SIZE,
};
pub use crate::primitive_types::{Frames, PortId, Time};
pub use crate::properties::*;
pub use crate::ringbuffer::{RingBuffer, RingBufferReader, RingBufferWriter};
pub use crate::transport::{
Transport, TransportBBT, TransportBBTValidationError, TransportPosition, TransportState,
TransportStatePosition,
};
pub use jack_sys;
mod client;
mod jack_enums;
mod jack_utils;
mod logging;
mod port;
mod primitive_types;
mod properties;
mod ringbuffer;
mod transport;
pub mod contrib {
mod closure;
pub use closure::ClosureProcessHandler;
#[cfg(feature = "controller")]
pub mod controller;
}
#[cfg(test)]
mod tests;
static TIME_CLIENT: std::sync::LazyLock<Client> = std::sync::LazyLock::new(|| {
Client::new("deprecated_get_time", ClientOptions::default())
.unwrap()
.0
});
#[deprecated = "Prefer using Client::time. get_time will be eventually be removed and it requires an extra client initialization."]
pub fn get_time() -> primitive_types::Time {
TIME_CLIENT.time()
}