Skip to content

Commit 807c671

Browse files
committed
Blank screen on SIGINT/SIGTERM to avoid image retention
1 parent 5813ea4 commit 807c671

File tree

3 files changed

+60
-1
lines changed

3 files changed

+60
-1
lines changed

Cargo.lock

Lines changed: 46 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ embedded-graphics = "0.6.0-alpha.2"
1111
linux-embedded-hal = "0.2.2"
1212
machine-ip = "0.2.1"
1313
ssd1306 = "0.3.0-alpha.2"
14+
ctrlc = { version = "3.0", features = ["termination"] }

src/main.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,26 @@ use machine_ip;
99
use ssd1306::{mode::GraphicsMode, Builder};
1010
use std::thread::sleep;
1111
use std::time::Duration;
12+
extern crate ctrlc;
13+
use std::sync::atomic::{AtomicBool, Ordering};
14+
use std::sync::Arc;
1215

1316
fn main() {
17+
let running = Arc::new(AtomicBool::new(true));
18+
let r = running.clone();
19+
ctrlc::set_handler(move || {
20+
r.store(false, Ordering::SeqCst);
21+
})
22+
.expect("Error setting Ctrl-C handler");
23+
1424
let i2c = I2cdev::new("/dev/i2c-1").unwrap();
1525

1626
let mut disp: GraphicsMode<_> = Builder::new().connect_i2c(i2c).into();
1727

1828
disp.init().unwrap();
1929
disp.flush().unwrap();
2030

21-
loop {
31+
while running.load(Ordering::SeqCst) {
2232
disp.draw(
2333
Line::new(Point::new(8, 16 + 16), Point::new(8 + 16, 16 + 16))
2434
.stroke(Some(BinaryColor::On))
@@ -68,4 +78,6 @@ fn main() {
6878
sleep(Duration::from_secs(2));
6979
disp.clear();
7080
}
81+
disp.clear();
82+
disp.flush().unwrap();
7183
}

0 commit comments

Comments
 (0)