aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-07 16:42:14 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-07 16:42:14 -0500
commit41b34a45ec4879ff45c3a775bc0f8e4f96ded265 (patch)
treeb56a95d5e982444880ebe173b321b2a4ecc4c641
parent6310f6a57a51e2147a146477d1ef26eb63ae544b (diff)
downloadteleterm-41b34a45ec4879ff45c3a775bc0f8e4f96ded265.tar.gz
teleterm-41b34a45ec4879ff45c3a775bc0f8e4f96ded265.zip
don't recalculate total matches unless we have added more frames
-rw-r--r--src/cmd/play.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/cmd/play.rs b/src/cmd/play.rs
index 756c907..ebf1d2b 100644
--- a/src/cmd/play.rs
+++ b/src/cmd/play.rs
@@ -135,6 +135,7 @@ impl Ttyrec {
struct SearchState {
query: regex::bytes::Regex,
count: usize,
+ total_frame_count: usize,
idx: Option<usize>,
}
@@ -263,7 +264,10 @@ impl Player {
if let Some(idx) = &mut state.idx {
state.idx = Some(*idx + 1);
} else {
- state.count = self.ttyrec.count_matches_from(0, &state.query);
+ if state.total_frame_count != self.ttyrec.len() {
+ state.count =
+ self.ttyrec.count_matches_from(0, &state.query);
+ }
state.idx = Some(
state.count
- self
@@ -297,7 +301,10 @@ impl Player {
if let Some(idx) = &mut state.idx {
state.idx = Some(*idx - 1);
} else {
- state.count = self.ttyrec.count_matches_from(0, &state.query);
+ if state.total_frame_count != self.ttyrec.len() {
+ state.count =
+ self.ttyrec.count_matches_from(0, &state.query);
+ }
state.idx = Some(
state.count
- self
@@ -356,6 +363,7 @@ impl Player {
self.search_state = Some(SearchState {
query: re,
count,
+ total_frame_count: self.ttyrec.len(),
idx: None,
});
self.next_match();