From 709cedd23d2d5c6f91d96e01dba30d7af4f316cc Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 5 Dec 2021 01:05:42 -0500 Subject: pause directly instead of going back through the event loop --- src/bin/ttyplay/frames.rs | 3 +++ src/bin/ttyplay/main.rs | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/bin/ttyplay/frames.rs b/src/bin/ttyplay/frames.rs index abd3a38..2c70f7d 100644 --- a/src/bin/ttyplay/frames.rs +++ b/src/bin/ttyplay/frames.rs @@ -66,6 +66,9 @@ impl FrameData { if i < self.frames.len() { return Box::pin(std::future::ready(true)); } + if self.done_reading { + return Box::pin(std::future::ready(false)); + } let new_frame_r = self.new_frame_r.clone(); Box::pin(async move { while let Some(new_len) = new_frame_r.recv().await.unwrap() { diff --git a/src/bin/ttyplay/main.rs b/src/bin/ttyplay/main.rs index e24d16e..3300047 100644 --- a/src/bin/ttyplay/main.rs +++ b/src/bin/ttyplay/main.rs @@ -118,7 +118,9 @@ fn spawn_timer_task( idx += 1; } Res::Wait(None) => { - event_w.send(event::Event::Pause).await.unwrap(); + idx = frames.lock_arc().await.count() - 1; + paused_time = Some(std::time::Instant::now()); + event_w.send(event::Event::Paused(true)).await.unwrap(); } Res::TimerAction(Ok(action)) => match action { TimerAction::Pause => { -- cgit v1.2.3-54-g00ecf