From ee95b6f3b158e4b4970eb7552b32c555cec884e2 Mon Sep 17 00:00:00 2001 From: sxyazi Date: Wed, 11 Jun 2025 10:11:07 +0800 Subject: [PATCH] .. --- yazi-fm/src/app/app.rs | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/yazi-fm/src/app/app.rs b/yazi-fm/src/app/app.rs index 1dfdf7ed..c9304a31 100644 --- a/yazi-fm/src/app/app.rs +++ b/yazi-fm/src/app/app.rs @@ -25,24 +25,19 @@ impl App { app.render(); let mut events = Vec::with_capacity(50); + let (mut timeout, mut last_render) = (None, Instant::now()); macro_rules! drain_events { () => { for event in events.drain(..) { app.dispatch(event)?; - try_render!(); - } - }; - } + if !NEED_RENDER.load(Ordering::Relaxed) { + continue; + } - let (mut timeout, mut last_render) = (None, Instant::now()); - macro_rules! try_render { - () => { - if NEED_RENDER.load(Ordering::Relaxed) { - if let Some(sub) = Duration::from_millis(10).checked_sub(last_render.elapsed()) { - timeout = timeout.or_else(|| Some(sleep(sub))); - } else { + timeout = Duration::from_millis(10).checked_sub(last_render.elapsed()); + if timeout.is_none() { app.render(); - (timeout, last_render) = (None, Instant::now()); + last_render = Instant::now(); } } }; @@ -51,7 +46,7 @@ impl App { loop { if let Some(t) = timeout.take() { select! { - _ = t => { + _ = sleep(t) => { app.render(); last_render = Instant::now(); }