You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/gui-apps/tuigreet/files/tuigreet-0.7.1-power-comman...

43 lines
1.1 KiB

--- a/src/greeter.rs
+++ b/src/greeter.rs
@@ -16,7 +16,7 @@ use tokio::{
process::Command,
sync::{
oneshot::{Receiver, Sender},
- RwLock, RwLockWriteGuard,
+ Notify, RwLock, RwLockWriteGuard,
},
};
use zeroize::Zeroize;
@@ -90,6 +90,7 @@ pub struct Greeter {
pub power_commands: HashMap<PowerOption, String>,
pub power_command: Option<Command>,
+ pub power_command_notify: Arc<Notify>,
pub power_setsid: bool,
pub working: bool,
--- a/src/main.rs
+++ b/src/main.rs
@@ -64,9 +64,12 @@ async fn run() -> Result<(), Box<dyn Error>> {
tokio::task::spawn({
let greeter = greeter.clone();
+ let notify = greeter.read().await.power_command_notify.clone();
async move {
loop {
+ notify.notified().await;
+
let command = greeter.write().await.power_command.take();
if let Some(mut command) = command {
--- a/src/power.rs
+++ b/src/power.rs
@@ -50,4 +50,5 @@ pub fn power(greeter: &mut Greeter, option: PowerOption) {
};
greeter.power_command = Some(command);
+ greeter.power_command_notify.notify_one();
}