mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
transport is rolling
This commit is contained in:
parent
1f928fba9d
commit
4fd208d53f
18 changed files with 540 additions and 498 deletions
|
|
@ -1,83 +0,0 @@
|
|||
mod handle;
|
||||
mod jack;
|
||||
mod render;
|
||||
pub use self::handle::*;
|
||||
pub use self::jack::*;
|
||||
pub use self::render::*;
|
||||
use crate::prelude::*;
|
||||
|
||||
pub const ACTIONS: [(&'static str, &'static str);3] = [
|
||||
("(Shift-)Tab", "Switch pane"),
|
||||
("Arrows", "Navigate"),
|
||||
("(Shift-)Space", "⯈ Play/pause"),
|
||||
];
|
||||
|
||||
pub struct Transport {
|
||||
exited: bool,
|
||||
title: String,
|
||||
client: ::jack::Client,
|
||||
transport: ::jack::Transport,
|
||||
//position: Arc<Mutex<Option<TransportStatePosition>>>,
|
||||
//poll_thread: std::thread::JoinHandle<()>,
|
||||
}
|
||||
|
||||
impl Transport {
|
||||
pub fn new () -> Result<Self, Box<dyn Error>> {
|
||||
let (client, status) = Client::new(
|
||||
"bloop_transport_client",
|
||||
ClientOptions::NO_START_SERVER
|
||||
)?;
|
||||
// Poll transport state every 10ms
|
||||
//let poll = std::time::Duration::from_millis(16);
|
||||
//let poll_thread = {
|
||||
//let transport = transport.clone();
|
||||
//let position = position.clone();
|
||||
//std::thread::spawn(move || loop {
|
||||
//std::thread::sleep(poll);
|
||||
//match transport.query() {
|
||||
//Ok(state) => *position.lock().unwrap() = Some(state),
|
||||
//Err(error) => {
|
||||
//*position.lock().unwrap() = None;
|
||||
////println!("{error:?}");
|
||||
//}
|
||||
//}
|
||||
//})
|
||||
//};
|
||||
Ok(Self {
|
||||
exited: false,
|
||||
title: String::from("Untitled project"),
|
||||
transport: client.transport(),
|
||||
client,
|
||||
//position,
|
||||
//poll_thread
|
||||
})
|
||||
}
|
||||
|
||||
pub fn play_from_start_or_stop_and_rewind (&mut self) {
|
||||
}
|
||||
|
||||
pub fn play_or_pause (&mut self) -> Result<(), Box<dyn Error>> {
|
||||
match self.transport.query_state()? {
|
||||
TransportState::Stopped => self.play(),
|
||||
TransportState::Rolling => self.stop(),
|
||||
_ => Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
pub fn play (&mut self) -> Result<(), Box<dyn Error>> {
|
||||
Ok(self.transport.start()?)
|
||||
}
|
||||
|
||||
pub fn stop (&mut self) -> Result<(), Box<dyn Error>> {
|
||||
Ok(self.transport.stop()?)
|
||||
}
|
||||
}
|
||||
|
||||
impl Exitable for Transport {
|
||||
fn exit (&mut self) {
|
||||
self.exited = true
|
||||
}
|
||||
fn exited (&self) -> bool {
|
||||
self.exited
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue