diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dbus/freedesktop_screensaver.rs | 9 | ||||
| -rw-r--r-- | src/dbus/gnome_shell_introspect.rs | 9 | ||||
| -rw-r--r-- | src/dbus/gnome_shell_screenshot.rs | 4 | ||||
| -rw-r--r-- | src/dbus/mod.rs | 2 | ||||
| -rw-r--r-- | src/dbus/mutter_display_config.rs | 9 | ||||
| -rw-r--r-- | src/dbus/mutter_screen_cast.rs | 31 | ||||
| -rw-r--r-- | src/dbus/mutter_service_channel.rs | 13 | ||||
| -rw-r--r-- | src/niri.rs | 8 | ||||
| -rw-r--r-- | src/pw_utils.rs | 4 | ||||
| -rw-r--r-- | src/utils/spawning.rs | 3 |
10 files changed, 48 insertions, 44 deletions
diff --git a/src/dbus/freedesktop_screensaver.rs b/src/dbus/freedesktop_screensaver.rs index 19bb6bf0..2ed874aa 100644 --- a/src/dbus/freedesktop_screensaver.rs +++ b/src/dbus/freedesktop_screensaver.rs @@ -6,9 +6,10 @@ use std::sync::{Arc, Mutex, OnceLock}; use anyhow::Context; use futures_util::StreamExt; use zbus::fdo::{self, RequestNameFlags}; +use zbus::message::Header; use zbus::names::{OwnedUniqueName, UniqueName}; use zbus::zvariant::NoneValue; -use zbus::{dbus_interface, MessageHeader, Task}; +use zbus::{interface, Task}; use super::Start; @@ -20,11 +21,11 @@ pub struct ScreenSaver { monitor_task: Arc<OnceLock<Task<()>>>, } -#[dbus_interface(name = "org.freedesktop.ScreenSaver")] +#[interface(name = "org.freedesktop.ScreenSaver")] impl ScreenSaver { async fn inhibit( &mut self, - #[zbus(header)] hdr: MessageHeader<'_>, + #[zbus(header)] hdr: Header<'_>, application_name: &str, reason_for_inhibit: &str, ) -> fdo::Result<u32> { @@ -33,7 +34,7 @@ impl ScreenSaver { hdr.sender() ); - let Ok(Some(name)) = hdr.sender() else { + let Some(name) = hdr.sender() else { return Err(fdo::Error::Failed(String::from("no sender"))); }; let name = OwnedUniqueName::from(name.to_owned()); diff --git a/src/dbus/gnome_shell_introspect.rs b/src/dbus/gnome_shell_introspect.rs index d9485d81..5151351b 100644 --- a/src/dbus/gnome_shell_introspect.rs +++ b/src/dbus/gnome_shell_introspect.rs @@ -1,8 +1,9 @@ use std::collections::HashMap; use zbus::fdo::{self, RequestNameFlags}; +use zbus::interface; +use zbus::object_server::SignalEmitter; use zbus::zvariant::{SerializeDict, Type, Value}; -use zbus::{dbus_interface, SignalContext}; use super::Start; @@ -33,7 +34,7 @@ pub struct WindowProperties { pub app_id: String, } -#[dbus_interface(name = "org.gnome.Shell.Introspect")] +#[interface(name = "org.gnome.Shell.Introspect")] impl Introspect { async fn get_windows(&self) -> fdo::Result<HashMap<u64, WindowProperties>> { if let Err(err) = self.to_niri.send(IntrospectToNiri::GetWindows) { @@ -52,8 +53,8 @@ impl Introspect { // FIXME: call this upon window changes, once more of the infrastructure is there (will be // needed for the event stream IPC anyway). - #[dbus_interface(signal)] - pub async fn windows_changed(ctxt: &SignalContext<'_>) -> zbus::Result<()>; + #[zbus(signal)] + pub async fn windows_changed(ctxt: &SignalEmitter<'_>) -> zbus::Result<()>; } impl Introspect { diff --git a/src/dbus/gnome_shell_screenshot.rs b/src/dbus/gnome_shell_screenshot.rs index 61121990..742f72b2 100644 --- a/src/dbus/gnome_shell_screenshot.rs +++ b/src/dbus/gnome_shell_screenshot.rs @@ -1,7 +1,7 @@ use std::path::PathBuf; -use zbus::dbus_interface; use zbus::fdo::{self, RequestNameFlags}; +use zbus::interface; use super::Start; @@ -18,7 +18,7 @@ pub enum NiriToScreenshot { ScreenshotResult(Option<PathBuf>), } -#[dbus_interface(name = "org.gnome.Shell.Screenshot")] +#[interface(name = "org.gnome.Shell.Screenshot")] impl Screenshot { async fn screenshot( &self, diff --git a/src/dbus/mod.rs b/src/dbus/mod.rs index a231a1d1..347b16fd 100644 --- a/src/dbus/mod.rs +++ b/src/dbus/mod.rs @@ -1,5 +1,5 @@ use zbus::blocking::Connection; -use zbus::Interface; +use zbus::object_server::Interface; use crate::niri::State; diff --git a/src/dbus/mutter_display_config.rs b/src/dbus/mutter_display_config.rs index b6df149c..e535e583 100644 --- a/src/dbus/mutter_display_config.rs +++ b/src/dbus/mutter_display_config.rs @@ -3,8 +3,9 @@ use std::sync::{Arc, Mutex}; use serde::Serialize; use zbus::fdo::RequestNameFlags; +use zbus::object_server::SignalEmitter; use zbus::zvariant::{self, OwnedValue, Type}; -use zbus::{dbus_interface, fdo, SignalContext}; +use zbus::{fdo, interface}; use super::Start; use crate::backend::IpcOutputMap; @@ -43,7 +44,7 @@ pub struct LogicalMonitor { properties: HashMap<String, OwnedValue>, } -#[dbus_interface(name = "org.gnome.Mutter.DisplayConfig")] +#[interface(name = "org.gnome.Mutter.DisplayConfig")] impl DisplayConfig { async fn get_current_state( &self, @@ -156,8 +157,8 @@ impl DisplayConfig { Ok((0, monitors, logical_monitors, properties)) } - #[dbus_interface(signal)] - pub async fn monitors_changed(ctxt: &SignalContext<'_>) -> zbus::Result<()>; + #[zbus(signal)] + pub async fn monitors_changed(ctxt: &SignalEmitter<'_>) -> zbus::Result<()>; } impl DisplayConfig { diff --git a/src/dbus/mutter_screen_cast.rs b/src/dbus/mutter_screen_cast.rs index 0aba084e..a19535ae 100644 --- a/src/dbus/mutter_screen_cast.rs +++ b/src/dbus/mutter_screen_cast.rs @@ -5,8 +5,9 @@ use std::sync::{Arc, Mutex}; use serde::Deserialize; use zbus::fdo::RequestNameFlags; +use zbus::object_server::{InterfaceRef, SignalEmitter}; use zbus::zvariant::{DeserializeDict, OwnedObjectPath, SerializeDict, Type, Value}; -use zbus::{dbus_interface, fdo, InterfaceRef, ObjectServer, SignalContext}; +use zbus::{fdo, interface, ObjectServer}; use super::Start; use crate::backend::IpcOutputMap; @@ -94,14 +95,14 @@ pub enum ScreenCastToNiri { session_id: usize, target: StreamTargetId, cursor_mode: CursorMode, - signal_ctx: SignalContext<'static>, + signal_ctx: SignalEmitter<'static>, }, StopCast { session_id: usize, }, } -#[dbus_interface(name = "org.gnome.Mutter.ScreenCast")] +#[interface(name = "org.gnome.Mutter.ScreenCast")] impl ScreenCast { async fn create_session( &self, @@ -136,26 +137,26 @@ impl ScreenCast { Ok(path) } - #[dbus_interface(property)] + #[zbus(property)] async fn version(&self) -> i32 { 4 } } -#[dbus_interface(name = "org.gnome.Mutter.ScreenCast.Session")] +#[interface(name = "org.gnome.Mutter.ScreenCast.Session")] impl Session { async fn start(&self) { debug!("start"); for (stream, iface) in &*self.streams.lock().unwrap() { - stream.start(self.id, iface.signal_context().clone()); + stream.start(self.id, iface.signal_emitter().clone()); } } pub async fn stop( &self, #[zbus(object_server)] server: &ObjectServer, - #[zbus(signal_context)] ctxt: SignalContext<'_>, + #[zbus(signal_context)] ctxt: SignalEmitter<'_>, ) { debug!("stop"); @@ -175,7 +176,7 @@ impl Session { let streams = mem::take(&mut *self.streams.lock().unwrap()); for (_, iface) in streams.iter() { server - .remove::<Stream, _>(iface.signal_context().path()) + .remove::<Stream, _>(iface.signal_emitter().path()) .await .unwrap(); } @@ -264,17 +265,17 @@ impl Session { Ok(path) } - #[dbus_interface(signal)] - async fn closed(ctxt: &SignalContext<'_>) -> zbus::Result<()>; + #[zbus(signal)] + async fn closed(ctxt: &SignalEmitter<'_>) -> zbus::Result<()>; } -#[dbus_interface(name = "org.gnome.Mutter.ScreenCast.Stream")] +#[interface(name = "org.gnome.Mutter.ScreenCast.Stream")] impl Stream { - #[dbus_interface(signal)] - pub async fn pipe_wire_stream_added(ctxt: &SignalContext<'_>, node_id: u32) + #[zbus(signal)] + pub async fn pipe_wire_stream_added(ctxt: &SignalEmitter<'_>, node_id: u32) -> zbus::Result<()>; - #[dbus_interface(property)] + #[zbus(property)] async fn parameters(&self) -> StreamParameters { match &self.target { StreamTarget::Output(output) => { @@ -361,7 +362,7 @@ impl Stream { } } - fn start(&self, session_id: usize, ctxt: SignalContext<'static>) { + fn start(&self, session_id: usize, ctxt: SignalEmitter<'static>) { if self.was_started.load(Ordering::SeqCst) { return; } diff --git a/src/dbus/mutter_service_channel.rs b/src/dbus/mutter_service_channel.rs index c78dcbee..d2be1c5f 100644 --- a/src/dbus/mutter_service_channel.rs +++ b/src/dbus/mutter_service_channel.rs @@ -1,9 +1,8 @@ -use std::os::fd::{FromRawFd, IntoRawFd}; use std::os::unix::net::UnixStream; use std::sync::Arc; use smithay::reexports::wayland_server::DisplayHandle; -use zbus::dbus_interface; +use zbus::{fdo, interface, zvariant}; use super::Start; use crate::niri::ClientState; @@ -12,14 +11,14 @@ pub struct ServiceChannel { display: DisplayHandle, } -#[dbus_interface(name = "org.gnome.Mutter.ServiceChannel")] +#[interface(name = "org.gnome.Mutter.ServiceChannel")] impl ServiceChannel { async fn open_wayland_service_connection( &mut self, service_client_type: u32, - ) -> zbus::fdo::Result<zbus::zvariant::OwnedFd> { + ) -> fdo::Result<zvariant::OwnedFd> { if service_client_type != 1 { - return Err(zbus::fdo::Error::InvalidArgs( + return Err(fdo::Error::InvalidArgs( "Invalid service client type".to_owned(), )); } @@ -34,7 +33,7 @@ impl ServiceChannel { credentials_unknown: true, }); self.display.insert_client(sock2, data).unwrap(); - Ok(unsafe { zbus::zvariant::OwnedFd::from_raw_fd(sock1.into_raw_fd()) }) + Ok(zvariant::OwnedFd::from(std::os::fd::OwnedFd::from(sock1))) } } @@ -46,7 +45,7 @@ impl ServiceChannel { impl Start for ServiceChannel { fn start(self) -> anyhow::Result<zbus::blocking::Connection> { - let conn = zbus::blocking::ConnectionBuilder::session()? + let conn = zbus::blocking::connection::Builder::session()? .name("org.gnome.Mutter.ServiceChannel")? .serve_at("/org/gnome/Mutter/ServiceChannel", self)? .build()?; diff --git a/src/niri.rs b/src/niri.rs index 1dfd44a9..a0819732 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -2067,7 +2067,7 @@ impl Niri { use smithay::reexports::rustix::io::{fcntl_setfd, FdFlags}; - let conn = zbus::blocking::ConnectionBuilder::system()?.build()?; + let conn = zbus::blocking::Connection::system()?; let message = conn.call_method( Some("org.freedesktop.login1"), @@ -2077,7 +2077,7 @@ impl Niri { &("handle-power-key", "niri", "Power key handling", "block"), )?; - let fd: zbus::zvariant::OwnedFd = message.body()?; + let fd: zbus::zvariant::OwnedFd = message.body().deserialize()?; // Don't leak the fd to child processes. let borrowed = unsafe { BorrowedFd::borrow_raw(fd.as_raw_fd()) }; @@ -4294,7 +4294,7 @@ impl Niri { async_io::block_on(async move { iface .get() - .stop(&server, iface.signal_context().clone()) + .stop(server.inner(), iface.signal_emitter().clone()) .await }); } @@ -4774,7 +4774,7 @@ impl Niri { }; async_io::block_on(async move { - if let Err(err) = DisplayConfig::monitors_changed(iface.signal_context()).await + if let Err(err) = DisplayConfig::monitors_changed(iface.signal_emitter()).await { warn!("error emitting MonitorsChanged: {err:?}"); } diff --git a/src/pw_utils.rs b/src/pw_utils.rs index 95b7e9c0..6712eeb3 100644 --- a/src/pw_utils.rs +++ b/src/pw_utils.rs @@ -41,7 +41,7 @@ use smithay::reexports::calloop::generic::Generic; use smithay::reexports::calloop::{Interest, LoopHandle, Mode, PostAction}; use smithay::reexports::gbm::Modifier; use smithay::utils::{Physical, Scale, Size, Transform}; -use zbus::SignalContext; +use zbus::object_server::SignalEmitter; use crate::dbus::mutter_screen_cast::{self, CursorMode}; use crate::niri::State; @@ -188,7 +188,7 @@ impl PipeWire { refresh: u32, alpha: bool, cursor_mode: CursorMode, - signal_ctx: SignalContext<'static>, + signal_ctx: SignalEmitter<'static>, ) -> anyhow::Result<Cast> { let _span = tracy_client::span!("PipeWire::start_cast"); diff --git a/src/utils/spawning.rs b/src/utils/spawning.rs index b7aa0d44..38ac52e6 100644 --- a/src/utils/spawning.rs +++ b/src/utils/spawning.rs @@ -424,8 +424,9 @@ mod systemd { trace!("waiting for JobRemoved"); for message in signals { + let body = message.body(); let body: (u32, OwnedObjectPath, &str, &str) = - message.body().context("error parsing signal")?; + body.deserialize().context("error parsing signal")?; if body.1 == job { // Our transient unit had started, we're good to exit the intermediate child. |
