From 12fdef8b2965dde7380049e82ae20f33129d5a82 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 13 Dec 2021 02:31:02 -0500 Subject: more cleanups --- src/main.rs | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 20e805c..24e59ee 100644 --- a/src/main.rs +++ b/src/main.rs @@ -40,17 +40,6 @@ fn get_offset() -> time::UtcOffset { } } -async fn resize(event_w: &async_std::channel::Sender) { - let size = terminal_size::terminal_size().map_or( - (24, 80), - |(terminal_size::Width(w), terminal_size::Height(h))| (h, w), - ); - event_w - .send(crate::event::Event::Resize(size)) - .await - .unwrap(); -} - async fn async_main() -> anyhow::Result<()> { let mut input = textmode::Input::new().await?; let mut output = textmode::Output::new().await?; @@ -62,24 +51,33 @@ async fn async_main() -> anyhow::Result<()> { let (event_w, event_r) = async_std::channel::unbounded(); - let mut state = state::State::new(get_offset()); - state.render(&mut output).await.unwrap(); - output.hard_refresh().await?; - { - let mut signals = signal_hook_async_std::Signals::new(&[ + let signals = signal_hook_async_std::Signals::new(&[ signal_hook::consts::signal::SIGWINCH, ])?; let event_w = event_w.clone(); async_std::task::spawn(async move { + let mut signals = async_std::stream::once( + signal_hook::consts::signal::SIGWINCH, + ) + .chain(signals); while signals.next().await.is_some() { - resize(&event_w).await; + event_w + .send(crate::event::Event::Resize( + terminal_size::terminal_size().map_or( + (24, 80), + |( + terminal_size::Width(w), + terminal_size::Height(h), + )| { (h, w) }, + ), + )) + .await + .unwrap(); } }); } - resize(&event_w).await; - { let event_w = event_w.clone(); async_std::task::spawn(async move { @@ -110,6 +108,7 @@ async fn async_main() -> anyhow::Result<()> { }); } + let mut state = state::State::new(get_offset()); let event_reader = event::Reader::new(event_r); while let Some(event) = event_reader.recv().await { match state.handle_event(event, &event_w).await { -- cgit v1.2.3-54-g00ecf