mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Previous inotify macro was blocking. Needs async closures...
This commit is contained in:
@@ -83,23 +83,22 @@ macro_rules! task_watch_item {
|
|||||||
executor: &mut Executor<'a>,
|
executor: &mut Executor<'a>,
|
||||||
signal_ctxt: SignalContext<'a>,
|
signal_ctxt: SignalContext<'a>,
|
||||||
) -> Result<(), RogError> {
|
) -> Result<(), RogError> {
|
||||||
|
use zbus::export::futures_util::StreamExt;
|
||||||
|
|
||||||
let ctrl = self.clone();
|
let ctrl = self.clone();
|
||||||
concat_idents::concat_idents!(watch_fn = monitor_, $name {
|
concat_idents::concat_idents!(watch_fn = monitor_, $name {
|
||||||
let mut watch = self.$self_inner.watch_fn()?;
|
let mut watch = self.$self_inner.watch_fn()?;
|
||||||
executor
|
executor
|
||||||
.spawn(async move {
|
.spawn(async move {
|
||||||
let mut buffer = [0; 1024];
|
let mut buffer = [0; 1024];
|
||||||
loop {
|
watch.event_stream(&mut buffer).unwrap().for_each(|e|{
|
||||||
if let Ok(events) = watch.read_events_blocking(&mut buffer) {
|
let value = ctrl.$name();
|
||||||
for _ in events {
|
dbg!(value);
|
||||||
let value = ctrl.$name();
|
concat_idents::concat_idents!(notif_fn = notify_, $name {
|
||||||
dbg!(value);
|
Self::notif_fn(&signal_ctxt, value).await.unwrap();
|
||||||
concat_idents::concat_idents!(notif_fn = notify_, $name {
|
});
|
||||||
Self::notif_fn(&signal_ctxt, value).await.unwrap();
|
smol::future::ready(())
|
||||||
});
|
}).await;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.detach();
|
.detach();
|
||||||
dbg!("SPWADEWFWEFE");
|
dbg!("SPWADEWFWEFE");
|
||||||
|
|||||||
Reference in New Issue
Block a user