From 84860b34b93047821584ca21824cd0fb5f9b3f24 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 5 Dec 2021 03:10:21 -0500 Subject: option to start paused --- src/bin/ttyplay/event.rs | 4 ++++ src/bin/ttyplay/main.rs | 20 ++++++++++++++++---- 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, timer_w: async_std::channel::Sender, 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, + + #[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, >, timer_r: async_std::channel::Receiver, + 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 { -- cgit v1.2.3-54-g00ecf