Compare commits

..

2 Commits

Author SHA1 Message Date
Luke D Jones 96b0f40886 Fix deadlock 2020-08-13 17:03:48 +12:00
Luke D Jones 4a5f029e53 Fix deadlocks on some awaits 2020-08-13 16:59:36 +12:00
8 changed files with 22 additions and 17 deletions
+2
View File
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [1.0.1] - 2020-08-13
- Fix small deadlock with awaits
## [1.0.0] - 2020-08-13
- Major fork and refactor to use asus-hid patch for ASUS N-Key device
Generated
+1 -1
View File
@@ -30,7 +30,7 @@ dependencies = [
[[package]]
name = "asus-nb-ctrl"
version = "1.0.0"
version = "1.0.1"
dependencies = [
"asus-nb",
"async-trait",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "asus-nb-ctrl"
version = "1.0.0"
version = "1.0.1"
license = "MPL-2.0"
readme = "README.md"
authors = ["Luke <luke@ljones.dev>"]
+5 -7
View File
@@ -41,21 +41,19 @@ impl crate::Controller for CtrlFanAndCPU {
tokio::spawn(async move {
while let Some(mode) = recv.recv().await {
let mut config = config1.lock().await;
if let Ok(mut lock) = gate1.try_lock() {
lock.set_fan_mode(mode, &mut config)
.unwrap_or_else(|err| warn!("{:?}", err));
}
let mut lock = gate1.lock().await;
lock.set_fan_mode(mode, &mut config)
.unwrap_or_else(|err| warn!("{:?}", err));
}
}),
// need to watch file path
tokio::spawn(async move {
loop {
if let Ok(mut lock) = gate2.try_lock() {
let mut config = config.lock().await;
let mut lock = gate2.lock().await;
if let Ok(mut config) = config.try_lock() {
lock.fan_mode_check_change(&mut config)
.unwrap_or_else(|err| warn!("{:?}", err));
}
tokio::time::delay_for(std::time::Duration::from_millis(500)).await;
}
}),
+5 -4
View File
@@ -77,9 +77,10 @@ impl crate::Controller for CtrlKbdBacklight {
tokio::spawn(async move {
loop {
let mut lock = gate2.lock().await;
let mut config = config.lock().await;
lock.let_bright_check_change(&mut config)
.unwrap_or_else(|err| warn!("{:?}", err));
if let Ok(mut config) = config.try_lock() {
lock.let_bright_check_change(&mut config)
.unwrap_or_else(|err| warn!("{:?}", err));
}
tokio::time::delay_for(std::time::Duration::from_millis(500)).await;
}
}),
@@ -148,7 +149,7 @@ impl CtrlKbdBacklight {
for device in enumerator.scan_devices()? {
if let Some(parent) = device.parent_with_subsystem_devtype("usb", "usb_device")? {
if parent.attribute_value("idProduct").unwrap() == id_product {
// && device.parent().unwrap().sysnum().unwrap() == 3
// && device.parent().unwrap().sysnum().unwrap() == 3
if let Some(dev_node) = device.devnode() {
info!("Using device at: {:?} for LED control", dev_node);
return Ok(dev_node.to_string_lossy().to_string());
+7 -2
View File
@@ -4,11 +4,15 @@ use daemon::{
laptops::match_laptop,
};
use dbus::{channel::Sender, nonblock::SyncConnection, tree::Signal};
use dbus::{
channel::Sender,
nonblock::{Process, SyncConnection},
tree::Signal,
};
use dbus_tokio::connection;
use asus_nb::{DBUS_IFACE, DBUS_NAME, DBUS_PATH};
use daemon::Controller;
use dbus_tokio::connection;
use log::LevelFilter;
use log::{error, info, warn};
use std::error::Error;
@@ -161,6 +165,7 @@ pub async fn start_daemon() -> Result<(), Box<dyn Error>> {
));
}
connection.process_all();
for handle in handles {
handle.await?;
}
+1 -1
View File
@@ -23,7 +23,7 @@ use std::sync::Arc;
use tokio::sync::{mpsc::Receiver, Mutex};
use tokio::task::JoinHandle;
pub static VERSION: &str = "1.0.0";
pub static VERSION: &str = "1.0.1";
use ::dbus::{nonblock::SyncConnection, tree::Signal};
-1
View File
@@ -18,4 +18,3 @@ impl fmt::Display for AuraError {
}
}
}