From 9835e2ae736235810b4ea1c162ca5e65c547e770 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 18 May 2024 04:49:50 +0200 Subject: Merging upstream version 1.71.1+dfsg1. Signed-off-by: Daniel Baumann --- vendor/prodash/src/render/line/draw.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'vendor/prodash/src/render') diff --git a/vendor/prodash/src/render/line/draw.rs b/vendor/prodash/src/render/line/draw.rs index cfd5eaae3..b45badf11 100644 --- a/vendor/prodash/src/render/line/draw.rs +++ b/vendor/prodash/src/render/line/draw.rs @@ -21,6 +21,7 @@ use crate::{ #[derive(Default)] pub struct State { tree: Vec<(progress::Key, progress::Task)>, + tree_hash: u64, messages: Vec, for_next_copy: Option, /// The size of the message origin, tracking the terminal height so things potentially off screen don't influence width anymore. @@ -34,10 +35,6 @@ pub struct State { impl State { pub(crate) fn update_from_progress(&mut self, progress: &impl Root) -> bool { - let mut hasher = DefaultHasher::new(); - self.tree.hash(&mut hasher); - let prev_hash = hasher.finish(); - progress.sorted_snapshot(&mut self.tree); let mut hasher = DefaultHasher::new(); self.tree.hash(&mut hasher); @@ -46,7 +43,9 @@ impl State { self.for_next_copy = progress .copy_new_messages(&mut self.messages, self.for_next_copy.take()) .into(); - prev_hash != cur_hash + let changed = self.tree_hash != cur_hash; + self.tree_hash = cur_hash; + changed } pub(crate) fn clear(&mut self) { self.tree.clear(); -- cgit v1.2.3