Use zbus::connection::Builder

This commit is contained in:
Ian Douglas Scott 2024-10-30 12:28:20 -07:00
parent f682e19f21
commit cad6a0e82c
2 changed files with 14 additions and 17 deletions

View file

@ -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()?;

View file

@ -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();