Use SeqCst for ordering

This commit is contained in:
Dheepak Krishnamurthy 2021-02-11 04:24:38 -07:00
parent e18fe6d593
commit 684b60147e

View file

@ -78,7 +78,7 @@ impl Events {
let pause_stdin = pause_stdin.clone(); let pause_stdin = pause_stdin.clone();
thread::spawn(move || { thread::spawn(move || {
loop { loop {
if pause_stdin.load(Ordering::Relaxed) { if pause_stdin.load(Ordering::SeqCst) {
thread::sleep(Duration::from_millis(250)); thread::sleep(Duration::from_millis(250));
continue; continue;
} }
@ -120,7 +120,7 @@ impl Events {
thread::spawn(move || loop { thread::spawn(move || loop {
// print!("\r\n"); // print!("\r\n");
// dbg!(*pause_ticker.lock().unwrap()); // dbg!(*pause_ticker.lock().unwrap());
while pause_ticker.load(Ordering::Relaxed) { while pause_ticker.load(Ordering::SeqCst) {
thread::sleep(Duration::from_millis(250)); thread::sleep(Duration::from_millis(250));
} }
if tx.send(Event::Tick).is_err() { if tx.send(Event::Tick).is_err() {
@ -145,24 +145,23 @@ impl Events {
} }
pub fn pause_ticker(&self) { pub fn pause_ticker(&self) {
self.pause_ticker.swap(true, Ordering::Relaxed); self.pause_ticker.swap(true, Ordering::SeqCst);
} }
pub fn resume_ticker(&self) { pub fn resume_ticker(&self) {
self.pause_ticker.swap(false, Ordering::Relaxed); self.pause_ticker.swap(false, Ordering::SeqCst);
} }
pub fn pause_event_loop(&self) { pub fn pause_event_loop(&self) {
self.pause_stdin.swap(true, Ordering::Relaxed); self.pause_stdin.swap(true, Ordering::SeqCst);
} }
pub fn resume_event_loop(&self) { pub fn resume_event_loop(&self) {
self.pause_stdin.swap(false, Ordering::Relaxed); self.pause_stdin.swap(false, Ordering::SeqCst);
} }
pub fn pause_key_capture(&self, terminal: &mut Terminal<CrosstermBackend<io::Stdout>>) { pub fn pause_key_capture(&self, terminal: &mut Terminal<CrosstermBackend<io::Stdout>>) {
self.pause_event_loop(); self.pause_event_loop();
std::thread::sleep(std::time::Duration::from_millis(50));
disable_raw_mode().unwrap(); disable_raw_mode().unwrap();
execute!(io::stdout(), LeaveAlternateScreen, DisableMouseCapture).unwrap(); execute!(io::stdout(), LeaveAlternateScreen, DisableMouseCapture).unwrap();
terminal.show_cursor().unwrap(); terminal.show_cursor().unwrap();
@ -171,7 +170,6 @@ impl Events {
pub fn resume_key_capture(&self, terminal: &mut Terminal<CrosstermBackend<io::Stdout>>) { pub fn resume_key_capture(&self, terminal: &mut Terminal<CrosstermBackend<io::Stdout>>) {
enable_raw_mode().unwrap(); enable_raw_mode().unwrap();
execute!(io::stdout(), EnterAlternateScreen, EnableMouseCapture).unwrap(); execute!(io::stdout(), EnterAlternateScreen, EnableMouseCapture).unwrap();
std::thread::sleep(std::time::Duration::from_millis(50));
self.resume_event_loop(); self.resume_event_loop();
terminal.resize(terminal.size().unwrap()).unwrap(); terminal.resize(terminal.size().unwrap()).unwrap();
} }