diff --git a/Cargo.lock b/Cargo.lock index 2d9d73cc..dde402d8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -229,7 +229,6 @@ dependencies = [ "argh", "dmi_id", "env_logger", - "gumdrop", "log", "png 0.17.16", "rog_anime", @@ -284,8 +283,8 @@ dependencies = [ "rog_platform", "ron", "serde", - "smol", "thiserror 2.0.18", + "tokio", "zbus", ] @@ -327,17 +326,6 @@ dependencies = [ "slab", ] -[[package]] -name = "async-fs" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - [[package]] name = "async-io" version = "2.6.0" @@ -367,17 +355,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-net" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" -dependencies = [ - "async-io", - "blocking", - "futures-lite", -] - [[package]] name = "async-process" version = "2.5.0" @@ -5333,23 +5310,6 @@ dependencies = [ "wayland-backend", ] -[[package]] -name = "smol" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" -dependencies = [ - "async-channel", - "async-executor", - "async-fs", - "async-io", - "async-lock", - "async-net", - "async-process", - "blocking", - "futures-lite", -] - [[package]] name = "smol_str" version = "0.2.2" diff --git a/Cargo.toml b/Cargo.toml index bcf83639..a185dee1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,6 @@ tokio = { version = "^1.39.0", default-features = false, features = [ ] } concat-idents = "^1.1" dirs = "^4.0" -smol = "^2.0" mio = "0.8.11" futures-util = "0.3.31" @@ -66,7 +65,6 @@ inotify = "^0.10" png_pong = "^0.8" pix = "^0.13" -tinybmp = "^0.4" gif = "^0.12" notify-rust = { version = "4.11.5", features = ["z", "async"] } diff --git a/asusctl/Cargo.toml b/asusctl/Cargo.toml index e6c35273..a5f64901 100644 --- a/asusctl/Cargo.toml +++ b/asusctl/Cargo.toml @@ -22,7 +22,6 @@ log.workspace = true env_logger.workspace = true ron.workspace = true -gumdrop.workspace = true zbus.workspace = true argh = "0.1" diff --git a/asusd-user/Cargo.toml b/asusd-user/Cargo.toml index 0e0ab8c4..a3d92cab 100644 --- a/asusd-user/Cargo.toml +++ b/asusd-user/Cargo.toml @@ -18,7 +18,7 @@ local_data = [] [dependencies] dirs.workspace = true -smol.workspace = true +tokio = { workspace = true, features = ["rt", "macros"] } # serialisation serde.workspace = true diff --git a/asusd-user/src/daemon.rs b/asusd-user/src/daemon.rs index 31f7970a..e2141837 100644 --- a/asusd-user/src/daemon.rs +++ b/asusd-user/src/daemon.rs @@ -12,7 +12,6 @@ use rog_aura::keyboard::KeyLayout; use rog_dbus::zbus_anime::AnimeProxyBlocking; use rog_dbus::zbus_aura::AuraProxyBlocking; use rog_dbus::{list_iface_blocking, DBUS_NAME}; -use smol::Executor; use zbus::Connection; #[cfg(not(feature = "local_data"))] @@ -21,7 +20,8 @@ const DATA_DIR: &str = "/usr/share/rog-gui/"; const DATA_DIR: &str = env!("CARGO_MANIFEST_DIR"); const BOARD_NAME: &str = "/sys/class/dmi/id/board_name"; -fn main() -> Result<(), Box> { +#[tokio::main(flavor = "current_thread")] +async fn main() -> Result<(), Box> { let mut logger = env_logger::Builder::new(); logger .parse_default_env() @@ -38,7 +38,6 @@ fn main() -> Result<(), Box> { let supported = list_iface_blocking()?; let config = ConfigBase::new().load(); - let executor = Executor::new(); let early_return = Arc::new(AtomicBool::new(false)); // Set up the anime data and run loop/thread @@ -50,37 +49,37 @@ fn main() -> Result<(), Box> { let anime_config = Arc::new(Mutex::new(anime_config)); let anime_proxy_blocking = AnimeProxyBlocking::new(&conn).unwrap(); - executor - .spawn(async move { - // Create server - let mut connection = Connection::session().await.unwrap(); - connection.request_name(DBUS_NAME).await.unwrap(); + tokio::spawn(async move { + // Create server + let mut connection = Connection::session().await.unwrap(); + connection.request_name(DBUS_NAME).await.unwrap(); - // Inner behind mutex required for thread safety - let inner = Arc::new(Mutex::new( - CtrlAnimeInner::new( - anime, - anime_proxy_blocking.clone(), - early_return.clone(), - ) - .unwrap(), - )); - // Need new client object for dbus control part - let anime_control = CtrlAnime::new( - anime_config, - inner.clone(), - anime_proxy_blocking, - early_return, + // Inner behind mutex required for thread safety + let inner = Arc::new(Mutex::new( + CtrlAnimeInner::new( + anime, + anime_proxy_blocking.clone(), + early_return.clone(), ) - .unwrap(); - anime_control.add_to_server(&mut connection).await; + .unwrap(), + )); + // Need new client object for dbus control part + let anime_control = CtrlAnime::new( + anime_config, + inner.clone(), + anime_proxy_blocking, + early_return, + ) + .unwrap(); + anime_control.add_to_server(&mut connection).await; + tokio::task::spawn_blocking(move || { loop { if let Ok(inner) = inner.clone().try_lock() { inner.run().ok(); } } - }) - .detach(); + }).await.unwrap(); + }); } } @@ -98,21 +97,18 @@ fn main() -> Result<(), Box> { .unwrap_or_else(|_| KeyLayout::default_layout()); let aura_proxy_blocking = AuraProxyBlocking::new(&conn).unwrap(); - executor - .spawn(async move { - loop { - aura_config.aura.next_state(&layout); - let packets = aura_config.aura.create_packets(); + tokio::task::spawn_blocking(move || { + loop { + aura_config.aura.next_state(&layout); + let packets = aura_config.aura.create_packets(); - aura_proxy_blocking.direct_addressing_raw(packets).unwrap(); - std::thread::sleep(std::time::Duration::from_millis(33)); - } - }) - .detach(); + aura_proxy_blocking.direct_addressing_raw(packets).unwrap(); + std::thread::sleep(std::time::Duration::from_millis(33)); + } + }); } // } - loop { - smol::block_on(executor.tick()); - } + std::future::pending::<()>().await; + Ok(()) }