diff options
author | Aram Drevekenin <aram@poor.dev> | 2019-10-16 18:40:41 +0200 |
---|---|---|
committer | Aram Drevekenin <aram@poor.dev> | 2019-10-16 18:40:41 +0200 |
commit | 5bf79ce29b8be65d06a1ebf63aedfab8478ba07a (patch) | |
tree | 78aaa269618fc9cb80f559d15b2b4f28c84da540 /src/display/ui.rs | |
parent | 17b508b72a7c60dfde9892e60c14a53f2455a70f (diff) |
fix(sigwinch): block when waiting for signal
Diffstat (limited to 'src/display/ui.rs')
-rw-r--r-- | src/display/ui.rs | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/src/display/ui.rs b/src/display/ui.rs index b31f8ea..b263582 100644 --- a/src/display/ui.rs +++ b/src/display/ui.rs @@ -8,7 +8,6 @@ use crate::display::UIState; use crate::network::{Connection, Utilization}; use ::std::net::Ipv4Addr; -use ::std::sync::atomic::{AtomicBool, Ordering}; pub struct Ui<B> where @@ -17,7 +16,6 @@ where terminal: Terminal<B>, state: UIState, ip_to_host: HashMap<Ipv4Addr, String>, - drawing: AtomicBool, } impl<B> Ui<B> @@ -32,30 +30,25 @@ where terminal, state: Default::default(), ip_to_host: Default::default(), - drawing: AtomicBool::new(false), } } pub fn draw(&mut self) { - if !self.drawing.load(Ordering::Acquire) { - self.drawing.store(true, Ordering::Release); - let state = &self.state; - let ip_to_host = &self.ip_to_host; - self.terminal - .draw(|mut frame| { - let size = frame.size(); - let connections = Table::create_connections_table(&state, &ip_to_host); - let processes = Table::create_processes_table(&state); - let remote_ips = Table::create_remote_ips_table(&state, &ip_to_host); - let total_bandwidth = TotalBandwidth { state: &state }; - let layout = Layout { - header: total_bandwidth, - children: vec![connections, processes, remote_ips], - }; - layout.render(&mut frame, size); - }) - .unwrap(); - self.drawing.store(false, Ordering::Release); - } + let state = &self.state; + let ip_to_host = &self.ip_to_host; + self.terminal + .draw(|mut frame| { + let size = frame.size(); + let connections = Table::create_connections_table(&state, &ip_to_host); + let processes = Table::create_processes_table(&state); + let remote_ips = Table::create_remote_ips_table(&state, &ip_to_host); + let total_bandwidth = TotalBandwidth { state: &state }; + let layout = Layout { + header: total_bandwidth, + children: vec![connections, processes, remote_ips], + }; + layout.render(&mut frame, size); + }) + .unwrap(); } pub fn update_state( &mut self, |