summaryrefslogtreecommitdiffstats
path: root/src/display/ui.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2019-10-16 18:40:41 +0200
committerAram Drevekenin <aram@poor.dev>2019-10-16 18:40:41 +0200
commit5bf79ce29b8be65d06a1ebf63aedfab8478ba07a (patch)
tree78aaa269618fc9cb80f559d15b2b4f28c84da540 /src/display/ui.rs
parent17b508b72a7c60dfde9892e60c14a53f2455a70f (diff)
fix(sigwinch): block when waiting for signal
Diffstat (limited to 'src/display/ui.rs')
-rw-r--r--src/display/ui.rs39
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,