aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-12-05 03:10:21 -0500
committerJesse Luehrs <doy@tozt.net>2021-12-05 03:10:21 -0500
commit84860b34b93047821584ca21824cd0fb5f9b3f24 (patch)
tree665bddc7a1df4fde598febb4e8e2814ba6f3a8e2
parentaadfdfb40eb6fdeef2ec6e4db84524134581ea08 (diff)
downloadttyrec-bin-84860b34b93047821584ca21824cd0fb5f9b3f24.tar.gz
ttyrec-bin-84860b34b93047821584ca21824cd0fb5f9b3f24.zip
option to start paused
-rw-r--r--src/bin/ttyplay/event.rs4
-rw-r--r--src/bin/ttyplay/main.rs20
-rw-r--r--src/bin/ttyplay/timer.rs7
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 {