From 4cb093104340572146b5b2020a06e11c7f8920fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20D=C3=BChr?= Date: Sat, 7 Mar 2020 14:36:11 +0100 Subject: [PATCH] use timestamp instead of counting down ticks --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/main.rs | 22 +++++++++------------- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e1f7c1..6e7d114 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -106,7 +106,7 @@ checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" [[package]] name = "tp-auto-kbbl" -version = "0.1.1" +version = "0.1.2" dependencies = [ "dbus", "evdev-rs", diff --git a/Cargo.toml b/Cargo.toml index 7cf4443..ce19529 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tp-auto-kbbl" -version = "0.1.1" +version = "0.1.2" authors = ["Tobias Dühr "] edition = "2018" diff --git a/src/main.rs b/src/main.rs index 6f275f7..512283f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -69,9 +69,10 @@ fn main() { ); let mut key_event = false; - let mut timeout = 0; let mut brightness = 0; let mut current_brightness = -1; + let mut last_event_ts = time::SystemTime::now(); + let timeout: u64 = config.timeout as u64; loop { // Wait 100ms in each loop to limit CPU usage @@ -83,20 +84,15 @@ fn main() { debug!("e: {:?}, b: {:?}, t: {:?}", key_event, brightness, timeout); if key_event { brightness = config.brightness; - timeout = config.timeout * 10; + last_event_ts = time::SystemTime::now(); key_event = false; - continue; - } - if timeout > 0 { - // Dim light - if config.dim && config.brightness > 1 && timeout < config.timeout * 10 / 2 { - brightness = 1; - } - // Count down - timeout -= 1; } else { - // Timeout is zero? Switch lights off - brightness = 0; + let es = last_event_ts.elapsed().unwrap().as_secs(); + if es >= timeout { + brightness = 0 + } else if config.dim && config.brightness > 1 && es >= timeout / 2 { + brightness = 1 + } } if brightness != current_brightness { println!("Setting brightness to {}", brightness);