Use zbus::connection::Builder
This commit is contained in:
parent
f682e19f21
commit
cad6a0e82c
2 changed files with 14 additions and 17 deletions
|
|
@ -73,30 +73,29 @@ impl Screensaver {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn serve(conn: &zbus::Connection, event_sender: EventSender) -> zbus::Result<()> {
|
pub async fn serve(event_sender: EventSender) -> zbus::Result<()> {
|
||||||
let inhibitors = Arc::new(Mutex::new(Vec::new()));
|
let inhibitors = Arc::new(Mutex::new(Vec::new()));
|
||||||
|
|
||||||
conn.request_name_with_flags(
|
|
||||||
"org.freedesktop.ScreenSaver",
|
|
||||||
zbus::fdo::RequestNameFlags::ReplaceExisting.into(),
|
|
||||||
)
|
|
||||||
.await?;
|
|
||||||
let screensaver = Screensaver {
|
let screensaver = Screensaver {
|
||||||
inhibitors: inhibitors.clone(),
|
inhibitors: inhibitors.clone(),
|
||||||
event_sender: event_sender.clone(),
|
event_sender: event_sender.clone(),
|
||||||
last_cookie: Arc::new(AtomicU32::new(0)),
|
last_cookie: Arc::new(AtomicU32::new(0)),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Clients vary in which path they use
|
// Clients vary in which path they use
|
||||||
let object_server = conn.object_server();
|
let conn = zbus::connection::Builder::session()?
|
||||||
object_server
|
.serve_at("/ScreenSaver", screensaver.clone())?
|
||||||
.at("/ScreenSaver", screensaver.clone())
|
.serve_at("/org/freedesktop/ScreenSaver", screensaver)?
|
||||||
.await?;
|
.build()
|
||||||
object_server
|
|
||||||
.at("/org/freedesktop/ScreenSaver", screensaver)
|
|
||||||
.await?;
|
.await?;
|
||||||
|
conn.request_name_with_flags(
|
||||||
|
"org.freedesktop.ScreenSaver",
|
||||||
|
zbus::fdo::RequestNameFlags::ReplaceExisting.into(),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
// If a client disconnects from DBus, remove any inhibitors it has added.
|
// If a client disconnects from DBus, remove any inhibitors it has added.
|
||||||
let dbus = zbus::fdo::DBusProxy::new(conn).await?;
|
let dbus = zbus::fdo::DBusProxy::new(&conn).await?;
|
||||||
let mut name_owner_stream = dbus.receive_name_owner_changed().await?;
|
let mut name_owner_stream = dbus.receive_name_owner_changed().await?;
|
||||||
while let Some(event) = name_owner_stream.next().await {
|
while let Some(event) = name_owner_stream.next().await {
|
||||||
let args = event.args()?;
|
let args = event.args()?;
|
||||||
|
|
|
||||||
|
|
@ -291,10 +291,8 @@ fn main() {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
scheduler
|
scheduler
|
||||||
.schedule(async move {
|
.schedule(async move {
|
||||||
if let Ok(connection) = zbus::Connection::session().await {
|
if let Err(err) = freedesktop_screensaver::serve(sender).await {
|
||||||
if let Err(err) = freedesktop_screensaver::serve(&connection, sender).await {
|
log::error!("failed to serve FreeDesktop screensaver interface: {}", err);
|
||||||
log::error!("failed to serve FreeDesktop screensaver interface: {}", err);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue