aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-12-05 01:05:42 -0500
committerJesse Luehrs <doy@tozt.net>2021-12-05 01:16:54 -0500
commit709cedd23d2d5c6f91d96e01dba30d7af4f316cc (patch)
tree20e34a03dbc5b966007d59f2fd323c0668a52943
parent3b77a5efde1e359c1b04fafe626f4a49c6ffcd09 (diff)
downloadttyrec-bin-709cedd23d2d5c6f91d96e01dba30d7af4f316cc.tar.gz
ttyrec-bin-709cedd23d2d5c6f91d96e01dba30d7af4f316cc.zip
pause directly instead of going back through the event loop
-rw-r--r--src/bin/ttyplay/frames.rs3
-rw-r--r--src/bin/ttyplay/main.rs4
2 files changed, 6 insertions, 1 deletions
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 => {