diff options
author | Jesse Luehrs <doy@tozt.net> | 2021-12-05 03:10:21 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2021-12-05 03:10:21 -0500 |
commit | 84860b34b93047821584ca21824cd0fb5f9b3f24 (patch) | |
tree | 665bddc7a1df4fde598febb4e8e2814ba6f3a8e2 | |
parent | aadfdfb40eb6fdeef2ec6e4db84524134581ea08 (diff) | |
download | ttyrec-bin-84860b34b93047821584ca21824cd0fb5f9b3f24.tar.gz ttyrec-bin-84860b34b93047821584ca21824cd0fb5f9b3f24.zip |
option to start paused
-rw-r--r-- | src/bin/ttyplay/event.rs | 4 | ||||
-rw-r--r-- | src/bin/ttyplay/main.rs | 20 | ||||
-rw-r--r-- | src/bin/ttyplay/timer.rs | 7 |
3 files changed, 26 insertions, 5 deletions
diff --git a/src/bin/ttyplay/event.rs b/src/bin/ttyplay/event.rs index 260c523..f3bbc62 100644 --- a/src/bin/ttyplay/event.rs +++ b/src/bin/ttyplay/event.rs @@ -140,8 +140,12 @@ pub async fn handle_events( event_r: async_std::channel::Receiver<Event>, timer_w: async_std::channel::Sender<TimerAction>, mut output: textmode::Output, + pause_at_start: bool, ) -> anyhow::Result<()> { let mut display = crate::display::Display::new(); + if pause_at_start { + display.paused(true); + } let mut current_screen = vt100::Parser::default().screen().clone(); let events = Reader::new(event_r); while let Some(event) = events.read().await { diff --git a/src/bin/ttyplay/main.rs b/src/bin/ttyplay/main.rs index 2f49db5..699d329 100644 --- a/src/bin/ttyplay/main.rs +++ b/src/bin/ttyplay/main.rs @@ -2,6 +2,7 @@ #![warn(clippy::nursery)] #![allow(clippy::missing_const_for_fn)] #![allow(clippy::struct_excessive_bools)] +#![allow(clippy::too_many_lines)] mod display; mod event; @@ -17,10 +18,17 @@ struct Opt { #[structopt(long)] clamp: Option<u64>, + + #[structopt(short, long)] + paused: bool, } async fn async_main(opt: Opt) -> anyhow::Result<()> { - let Opt { file, clamp } = opt; + let Opt { + file, + clamp, + paused, + } = opt; let fh = async_std::fs::File::open(file).await?; @@ -39,10 +47,14 @@ async fn async_main(opt: Opt) -> anyhow::Result<()> { )); frames::load_from_file(frame_data.clone(), fh, event_w.clone(), clamp); - let timer_task = - timer::spawn_task(event_w.clone(), frame_data.clone(), timer_r); + let timer_task = timer::spawn_task( + event_w.clone(), + frame_data.clone(), + timer_r, + paused, + ); - event::handle_events(event_r, timer_w.clone(), output).await?; + event::handle_events(event_r, timer_w.clone(), output, paused).await?; timer_w.send(event::TimerAction::Quit).await?; timer_task.await; diff --git a/src/bin/ttyplay/timer.rs b/src/bin/ttyplay/timer.rs index 16541a6..7be5245 100644 --- a/src/bin/ttyplay/timer.rs +++ b/src/bin/ttyplay/timer.rs @@ -6,11 +6,16 @@ pub fn spawn_task( async_std::sync::Mutex<crate::frames::FrameData>, >, timer_r: async_std::channel::Receiver<crate::event::TimerAction>, + pause_at_start: bool, ) -> async_std::task::JoinHandle<()> { async_std::task::spawn(async move { let mut idx = 0; let mut start_time = std::time::Instant::now(); - let mut paused_time = None; + let mut paused_time = if pause_at_start { + Some(start_time) + } else { + None + }; let mut force_update_time = false; loop { enum Res { |